Skip to content

Pandas: Index von DataFrame, Serie mit reset_index() zurücksetzen

Python

Durch die Verwendung von reset_index() kann der Index (Zeilenlabel) von pandas.DataFrame und pandas.Series auf die fortlaufende Nummer (Zeilennummer) beginnend bei 0 neu zugewiesen werden.

Wenn Zeilennummern als Index used Werden, ist es bequemer, neu zu indizieren, wenn sich sterben Reihenfolge der Zeilen nach dem Sortieren ändert oder wenn eine Nummer nach dem Löschen einer Zeile fehlt.

Es WIRD auch used, um den aktuellen Index zu löschen oder zur Datenspalte aufzurufen, wenn der Zeilenname (String) als Index used WIRD. Durch die Verwendung von set_index() und reset_index() can SIE den Index auf eine andere Spalte ändern.

Dieser Artikel hat folgenden Inhalt.

  • Grundlegende Verwendung von reset_index()
  • Ändern Sie den Index in eine andere Spalte durch reset_index() und set_index()

Die folgenden Daten werden als Beispiel verwendet.

import pandas as pd

df = pd.read_csv('data/src/sample_pandas_normal.csv')
print(df)
#       name  age state  point
# 0    Alice   24    NY     64
# 1      Bob   42    CA     92
# 2  Charlie   18    CA     70
# 3     Dave   68    TX     70
# 4    Ellen   24    CA     88
# 5    Frank   30    NY     57

Das Beispiel verwendet pandas.DataFrame, aber pandas.Series bietet auch reset_index(). Die Verwendung ist die gleiche.

Grundlegende Verwendung von reset_index()

Sortieren Sie Zeilen mit sort_values() zur Erklärung.

Im following Artikel FINDEN SIE Laptops zum Sortieren mit sort_values() und sort_index().

df.sort_values('state', inplace=True)
print(df)
#       name  age state  point
# 1      Bob   42    CA     92
# 2  Charlie   18    CA     70
# 4    Ellen   24    CA     88
# 0    Alice   24    NY     64
# 5    Frank   30    NY     57
# 3     Dave   68    TX     70

Weisen Sie den Index durch reset_index() den fortlaufenden Nummern neu zu, beginnend bei 0.

Standardmäßig wird der ursprüngliche Index als neue Spalte hinzugefügt.

df_r = df.reset_index()
print(df_r)
#    index     name  age state  point
# 0      1      Bob   42    CA     92
# 1      2  Charlie   18    CA     70
# 2      4    Ellen   24    CA     88
# 3      0    Alice   24    NY     64
# 4      5    Frank   30    NY     57
# 5      3     Dave   68    TX     70

Löschen Sie den ursprünglichen Index:drop

Wenn der Parameter drop auf True gesetzt ist, wird der ursprüngliche Index gelöscht.

df_r = df.reset_index(drop=True)
print(df_r)
#       name  age state  point
# 0      Bob   42    CA     92
# 1  Charlie   18    CA     70
# 2    Ellen   24    CA     88
# 3    Alice   24    NY     64
# 4    Frank   30    NY     57
# 5     Dave   68    TX     70

Originalobjekt ändern:inplace

Standardmäßig ändert reset_index() das ursprüngliche Objekt nicht und gibt ein neues Objekt zurück, aber wenn das Argument inplace auf True gesetzt ist, wird das ursprüngliche Objekt geändert.

df.reset_index(inplace=True, drop=True)
print(df)
#       name  age state  point
# 0      Bob   42    CA     92
# 1  Charlie   18    CA     70
# 2    Ellen   24    CA     88
# 3    Alice   24    NY     64
# 4    Frank   30    NY     57
# 5     Dave   68    TX     70

Ändern Sie den Index in eine andere Spalte durch reset_index() und set_index()

Nehmen wir als Beispiel den Fall, in dem ein Zeilenname (String) als Index gesetzt wird.

df = pd.read_csv('data/src/sample_pandas_normal.csv', index_col=0)
print(df)
#          age state  point
# name                     
# Alice     24    NY     64
# Bob       42    CA     92
# Charlie   18    CA     70
# Dave      68    TX     70
# Ellen     24    CA     88
# Frank     30    NY     57

Durch die Verwendung von reset_index() werden fortlaufend Nummern auf den Index gesetzt und der ursprüngliche Index WIRD zur Datenspalte hinzugefügt.

df_r = df.reset_index()
print(df_r)
#       name  age state  point
# 0    Alice   24    NY     64
# 1      Bob   42    CA     92
# 2  Charlie   18    CA     70
# 3     Dave   68    TX     70
# 4    Ellen   24    CA     88
# 5    Frank   30    NY     57

Verwenden Sie set_index(), um eine andere Spalte in einem Index zu ändern.

Das Anwenden von set_index() auf den ursprünglichen DataFrame löscht den ursprünglichen Index.

df_s = df.set_index('state')
print(df_s)
#        age  point
# state            
# NY      24     64
# CA      42     92
# CA      18     70
# TX      68     70
# CA      24     88
# NY      30     57

Wenn Sie den ursprünglichen Index als Datenspalte beibehalten möchten, können Sie set_index() nach reset_index() verwenden.

df_rs = df.reset_index().set_index('state')
print(df_rs)
#           name  age  point
# state                     
# NY       Alice   24     64
# CA         Bob   42     92
# CA     Charlie   18     70
# TX        Dave   68     70
# CA       Ellen   24     88
# NY       Frank   30     57