559 Stimmen

Wie setzt man den Index in einem Pandas-Datenrahmen zurück?

Ich habe einen DataFrame, aus dem ich einige Zeilen entferne. Als Ergebnis erhalte ich einen DataFrame, in dem der Index so aussieht: [1,5,6,10,11] und ich möchte ihn auf [0,1,2,3,4] zurücksetzen. Wie kann ich das machen?


Das Folgende scheint zu funktionieren:

df = df.reset_index()
del df['index']

Das Folgende funktioniert nicht:

df = df.reindex()

1110voto

mkln Punkte 14073

DataFrame.reset_index ist das, wonach du suchst. Wenn du nicht möchtest, dass es als Spalte gespeichert wird, dann mache folgendes:

df = df.reset_index(drop=True)

Wenn du nicht neu zuweisen möchtest:

df.reset_index(drop=True, inplace=True)

73voto

jezrael Punkte 716156

Weitere Lösungen sind das Zuweisen von RangeIndex oder range:

df.index = pd.RangeIndex(len(df.index))

df.index = range(len(df.index))

Es ist schneller:

df = pd.DataFrame({'a':[8,7], 'c':[2,4]}, index=[7,8])
df = pd.concat([df]*10000)
print (df.head())

In [298]: %timeit df1 = df.reset_index(drop=True)
Der langsamste Durchlauf dauerte 7,26 Mal länger als der schnellste. Dies könnte bedeuten, dass ein Zwischenergebnis zwischengespeichert wird.
10000 loops, best of 3: 105 µs per loop

In [299]: %timeit df.index = pd.RangeIndex(len(df.index))
Der langsamste Durchlauf dauerte 15,05 Mal länger als der schnellste. Dies könnte bedeuten, dass ein Zwischenergebnis zwischengespeichert wird.
100000 loops, best of 3: 7,84 µs pro Schleife

In [300]: %timeit df.index = range(len(df.index))
Der langsamste Durchlauf dauerte 7,10 Mal länger als der schnellste. Dies könnte bedeuten, dass ein Zwischenergebnis zwischengespeichert wird.
100000 loops, best of 3: 14,2 µs pro Schleife

24voto

user10692571 Punkte 259
data1.reset_index(inplace=True)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X