Nehmen Sie den folgenden Datenrahmen:
x = np.tile(np.arange(3),3)
y = np.repeat(np.arange(3),3)
df = pd.DataFrame({"x": x, "y": y})
x y
0 0 0
1 1 0
2 2 0
3 0 1
4 1 1
5 2 1
6 0 2
7 1 2
8 2 2
Ich muss es x
zuerst sortieren und erst dann nach y
:
df2 = df.sort(["x", "y"])
x y
0 0 0
3 0 1
6 0 2
1 1 0
4 1 1
7 1 2
2 2 0
5 2 1
8 2 2
Wie kann ich den Index so ändern, dass er wieder aufsteigt? Dh wie bekomme ich das:
x y
0 0 0
1 0 1
2 0 2
3 1 0
4 1 1
5 1 2
6 2 0
7 2 1
8 2 2
Ich habe folgendes versucht. Leider ändert sich der Index überhaupt nicht:
df2.reindex(np.arange(len(df2.index)))
df.sort(["x", "y"], ignore_index=True, inplace=True)
Antworten:
Sie können den Index zurücksetzen , indem
reset_index
Sie einen Standardindex von 0, 1, 2, ..., n-1drop=True
wiederherstellen (und damit angeben, dass Sie den vorhandenen Index löschen möchten, anstatt ihn als zusätzliche Spalte zu Ihrem Datenrahmen hinzuzufügen). ::quelle
df.sort()
ist veraltet, verwenden Siedf.sort_values(...)
: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort_values.htmlFolgen Sie dann der Antwort von Joris
df.reset_index(drop=True)
quelle
Da pandas 1.0.0
df.sort_values
einen neuen Parameterignore_index
hat, der genau das tut, was Sie brauchen:quelle
Sie können neue Indizes festlegen, indem Sie Folgendes verwenden
set_index
:Ausgabe:
quelle
reset_index()
stattdessen