Pandas df.reset_index()-Funktion

Pandas 常用函数Gängige Pandas-Funktionen


df.reset_index()ist eine Funktion in Pandas, die verwendet wird, um den Zeilenindex eines DataFrame zurückzusetzen.

Bei der Datenverarbeitung kann der Index diskontinuierlich werden oder Ihren Anforderungen nicht mehr entsprechen.reset_index()Er kann den Index auf den standardmäßigen Ganzzahlindex (0, 1, 2, ...) zurücksetzen oder den aktuellen Index in eine Spalte umwandeln. Dies ist sehr nützlich für die Datenbereinigung, das Sortieren und das Organisieren von Daten nach dem Filtern.


Grundlegende Syntax und Parameter

reset_index()ist eine Mitgliedsfunktion von DataFrame, die über den Punktoperator aufgerufen wird.zum Aufrufen.

Syntaxformat

DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill='')

Parameterbeschreibung

Parameter Type Erforderlich Beschreibung Standardwert
level int, str, tuple oder list Optional Gibt die zurückzusetzende(n) Indexebene(n) an. Bei einem MultiIndex können Sie auswählen, einige Ebenen zurückzusetzen. Standardmäßig werden alle Ebenen zurückgesetzt. Keine
drop bool Optional Wenn esTrue, den ursprünglichen Index verwerfen, ohne ihn in eine Spalte umzuwandeln; wenn erFalse, den ursprünglichen Index als neue Spalte beibehalten. False
inplace bool Optional Wenn esTrue, das ursprüngliche DataFrame direkt ändern und kein neues Objekt zurückgeben; wenn esFalse, ein neues DataFrame zurückgeben und die ursprünglichen Daten unverändert lassen. False
col_level int oder str Optional Wenn die Spaltennamen ein MultiIndex sind, geben Sie an, in welche Ebene der Index eingefügt werden soll. 0
col_fill str Optional Wenn die Spaltennamen ein MultiIndex sind, wird dies verwendet, um die Spaltennamen anderer Ebenen auszufüllen, wenn der ursprüngliche Index in eine Spalte umgewandelt wird. ''

Beschreibung des Rückgabewerts

  • Gibt ein neues DataFrame zurück (wenninplace=False), oderNone(wenninplace=True)。
  • Im zurückgegebenen DataFrame wurde der Index zurückgesetzt. Der ursprüngliche Index (fallsdrop=False) wird als neue Spalte beibehalten.

Beispiele

Lassen Sie uns anhand einer Reihe von Beispielen gründlich meistern,reset_index()die Verwendung von.

Beispiel 1: Grundlegende Verwendung – Index zurücksetzen

Die häufigste Verwendung besteht darin, den Index auf den standardmäßigen Integer-Index zurückzusetzen.

Beispiel

import pandas as pd
import numpy as np

# DataFrame erstellen
data = {
    'Name': ['Zhang San', 'Li Si', 'Wang Wu'],
    'Score': [85, 92, 78]
}
df = pd.DataFrame(data)

print(Originaldaten (Standardindex):)
print(df)
print("=" * 50)

# Sortiere die Daten, was zu einem nicht zusammenhängenden Index führt
df_sorted = df.sort_values(by='Score', ascending=False)

print(Sortierte Daten (nicht zusammenhängende Indizes):)
print(df_sorted)
print("=" * 50)

# Index zurücksetzen
df_reset = df_sorted.reset_index()

print(Nach dem Zurücksetzen des Index:)
print(df_reset)

Erwartete Ausgabe:

原始数据(默认索引):
   姓名  成绩
0  张三   85
1  李四   92
2  王五   78
==================================================
排序后的数据(索引不连续):
   姓名  成绩
1  李四   92
0  张三   85
2  王五   78
==================================================
重置索引后:
   姓名  成绩  index
0  李四   92       1  # 原来的索引作为新列
1  张三   85       0
2  王五   78       2

Code-Erklärung:

  1. Nach dem Sortieren wird der Index zu 1, 0, 2, nicht mehr fortlaufend 0, 1, 2.
  2. Nach der Verwendung vonreset_index(), der Index wird auf 0, 1, 2 zurückgesetzt.
  3. Der ursprüngliche Index wird als neue Spalte "index" beibehalten.

Beispiel 2: Den drop-Parameter verwenden, um den ursprünglichen Index zu verwerfen

Wenn Sie den ursprünglichen Index nicht beibehalten müssen, können Siedrop=TrueParameter überschrieben werden.

Beispiel

import pandas as pd
import numpy as np

# DataFrame erstellen
data = {
    'Name': ['Zhang San', 'Li Si', 'Wang Wu'],
    'Score': [85, 92, 78]
}
df = pd.DataFrame(data)

# Daten sortieren
df_sorted = df.sort_values(by='Score', ascending=False)

print("Sortierte Daten:")
print(df_sorted)
print("=" * 50)

# Index zurücksetzen, ursprünglichen Index verwerfen
df_reset = df_sorted.reset_index(drop=True)

print(Nach dem Zurücksetzen des Index (ursprünglicher Index wird verworfen):)
print(df_reset)

Erwartete Ausgabe:

排序后的数据:
   姓名  成绩
1  李四   92
0  张三   85
2  王五   78
==================================================
重置索引(丢弃原索引)后:
   姓名  成绩
0  李四   92
1  张三   85
2  王五   78

Code-Erklärung:

  • Nach der Verwendung vondrop=True, wird der ursprüngliche Index direkt verworfen und nicht als neue Spalte beibehalten.
  • Dies ist nützlich, wenn Sie die ursprünglichen Indexinformationen nicht beibehalten müssen.

Beispiel 3: Index nach dem Filtern der Daten zurücksetzen

Nach dem Filtern der Daten kann der Index diskontinuierlich sein. Verwenden Siereset_index()um die Daten aufzuräumen.

Beispiel

import pandas as pd
import numpy as np

# Ein DataFrame mit allen Studentennoten erstellen
data = {
    'Name': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu', 'Qian Qi'],
    'Score': [85, 92, 78, 90, 88]
}
df = pd.DataFrame(data)

print(“Rohdaten:”)
print(df)
print("=" * 50)

# Studenten mit Punktzahlen größer als 85 filtern
df_filtered = df[df['Score'] > 85]

print(Gefilterte Daten (nicht zusammenhängende Indizes):)
print(df_filtered)
print("=" * 50)

# Index zurücksetzen
df_reset = df_filtered.reset_index(drop=True)

print(Nach dem Zurücksetzen des Index:)
print(df_reset)

Erwartete Ausgabe:

原始数据:
   姓名  成绩
0  张三   85
1  李四   92
2  王五   78
3  赵六   90
4  钱七   88
==================================================
筛选后的数据(索引不连续):
   姓名  成绩
1  李四   92
3  赵六   90
4  钱七   88

Code-Erklärung:

  • Nach dem Filtern sind die beibehaltenen Indizes die ursprünglichen 1, 3, 4, nicht die fortlaufenden 0, 1, 2.
  • Verwendungreset_index(drop=True)kann einen fortlaufenden Index liefern, was für die weitere Verarbeitung bequemer ist.
  • Beispiel 4: Index nach dem Entfernen doppelter Zeilen zurücksetzen

    Nach dem Löschen doppelter Daten können Sie auch verwendenreset_index()um den Index aufzuräumen.

    Beispiel

    import pandas as pd
    import numpy as np

    # DataFrame mit doppelten Zeilen erstellen
    data = {
        'Name': ['Zhang San', 'Li Si', 'Zhang San', 'Wang Wu'],
        'city': ['Beijing', 'Shanghai', 'Beijing', 'Guangzhou']
    }
    df = pd.DataFrame(data)

    print(Originaldaten (einschließlich doppelter Zeilen):)
    print(df)
    print("=" * 50)

    # Doppelte Zeile löschen
    df_unique = df.drop_duplicates()

    print(Nach dem Entfernen doppelter Zeilen (nicht zusammenhängende Indizes):)
    print(df_unique)
    print("=" * 50)

    # Index zurücksetzen
    df_reset = df_unique.reset_index(drop=True)

    print(Nach dem Zurücksetzen des Index:)
    print(df_reset)

    Erwartete Ausgabe:

    原始数据(包含重复行):
       姓名  城市
    0  张三  北京
    1  李四  上海
    2  张三  北京  # 重复
    3  王五  广州
    ==================================================
    删除重复行后(索引不连续):
       姓名  城市
    0  张三  北京
    1  李四  上海
    3  王五  广州
    

    Code-Erklärung:

    • Nach dem Löschen doppelter Zeilen sind die beibehaltenen Indizes 0, 1, 3, nicht fortlaufend 0, 1, 2.
    • Nach dem Zurücksetzen des Index sind die Daten übersichtlicher.
    • Beispiel 5: Index nach der Behandlung fehlender Werte zurücksetzen

      Nach dem Löschen von Zeilen mit fehlenden Werten kann der Index ebenfalls zurückgesetzt werden.

      Beispiel

      import pandas as pd
      import numpy as np

      # Erstelle einen DataFrame mit fehlenden Werten
      data = {
          'Name': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu'],
          'Score': [85, np.nan, 92, 78]
      }
      df = pd.DataFrame(data)

      print(“Rohdaten:”)
      print(df)
      print("=" * 50)

      # Zeilen mit fehlenden Werten löschen
      df_cleaned = df.dropna()

      print(Nach dem Entfernen fehlender Werte (nicht zusammenhängende Indizes):)
      print(df_cleaned)
      print("=" * 50)

      # Index zurücksetzen
      df_reset = df_cleaned.reset_index(drop=True)

      print(Nach dem Zurücksetzen des Index:)
      print(df_reset)

      Erwartete Ausgabe:

      原始数据:
         姓名   成绩
      0  张三  85.0
      1  李四   NaN  # 缺失值
      2  王五  92.0
      3  赵六  78.0
      ==================================================
      删除缺失值后(索引不连续):
         姓名   成绩
      0  张三  85.0
      2  王五  92.0
      3  赵六  78.0
      

      Code-Erklärung:

      • Nach dem Löschen von Zeile 1 (der Wert von Li Si ist NaN) sind die beibehaltenen Indizes 0, 2, 3.
      • Verwendungreset_index()kann einen fortlaufenden Index von 0, 1, 2 ergeben.
      • Beispiel 6: Verwenden des inplace-Parameters zum Ändern an Ort und Stelle

        Verwendunginplace=TrueSie können das ursprüngliche DataFrame direkt ändern.

        Beispiel

        import pandas as pd
        import numpy as np

        # DataFrame erstellen
        data = {
            'Name': ['Zhang San', 'Li Si', 'Wang Wu'],
            'Score': [85, 92, 78]
        }
        df = pd.DataFrame(data)

        # Daten filtern
        df_filtered = df[df['Score'] > 80]

        print(Gefilterte Daten (Index nicht zurückgesetzt):)
        print(df_filtered)
        print(fDaten-ID: {id(df_filtered)})
        print("=" * 50)

        # inplace=True verwenden, um den Index an Ort und Stelle zurückzusetzen
        df_filtered.reset_index(drop=True, inplace=True)

        print(Nach dem Zurücksetzen mit inplace=True:)
        print(df_filtered)
        print(fDaten-ID: {id(df_filtered)})

        Erwartete Ausgabe:

        筛选后的数据(未重置):
           姓名  成绩
        1  李四   92
        0  张三   85
        数据 id: 140234567890
        ==================================================
        使用 inplace=True 重置后:
           姓名  成绩
        0  李四   92
        1  张三   85
        数据 id: 140234567890  # 同一个对象
        

        Code-Erklärung:

        • Nach der Verwendung voninplace=True, bleibt die Speicheradresse (id) des DataFrame unverändert.
        • Diese Methode kann Speicher sparen.
        • Beispiel 7: Zurücksetzen eines mehrstufigen Index

          Für einen MultiIndex können Sie bestimmte Ebenen oder alle Ebenen zurücksetzen.

          Beispiel

          import pandas as pd
          import numpy as np

          # DataFrame mit einem MultiIndex erstellen
          df = pd.DataFrame({
              'Score': [85, 92, 78, 88, 90, 95]
          }, index=pd.MultiIndex.from_tuples([
              ('Class 1', 'Zhang San'), ('Class 1', 'Li Si'), ('Class 1', 'Wang Wu'),
              ('Class 2', Zhao Wu'), ('Class 2', 'Qian Qi'), (Class 2', Sun Ba')
          ], names=['Class', 'Name']))

          print(Ursprüngliche Daten (MultiIndex):)
          print(df)
          print("=" * 50)

          # Indexebenen
          df_reset_all = df.reset_index()

          print(Alle Indexebenen zurücksetzen:)
          print(df_reset_all)
          print("=" * 50)

          # Nur die erste Indexebene zurücksetzen (Class)
          df_reset_first = df.reset_index(level=0)

          print(Nur den Class-Index zurücksetzen:)
          print(df_reset_first)

          Erwartete Ausgabe:

          原始数据(多层索引):
                     成绩
          班级  姓名
          一班  张三     85
               李四     92
               王五     78
          二班  赵六     88
               钱七     90
               孙八     95
          ==================================================
          重置所有索引级别:
             班级  姓名  成绩
          0  一班  张三   85
          1  一班  李四   92
          2  一班  王五   78
          3  二班  赵六   88
          4  二班  钱七   90
          5  二班  钱七   95
          

          Code-Erklärung:

          • Ein DataFrame mit einem MultiIndex kann verwenden,reset_index()um den Index in Spalten umzuwandeln.
          • Verwenden Sie dielevelParameter, um auszuwählen, welche Indexebene zurückgesetzt werden soll.

          • Hinweise

            • reset_index()Das ursprüngliche DataFrame wird standardmäßig nicht geändert. Um es direkt zu ändern, verwenden Sieinplace=TrueParameter überschrieben werden.
            • Standardmäßig (drop=False), wird der ursprüngliche Index als neue Spalte beibehalten. Wenn Sie ihn nicht behalten möchten, verwenden Siedrop=True。
            • Bevor Siereset_index(), stellen Sie sicher, dass es keine wichtigen Indexinformationen gibt, die beibehalten werden müssen.
            • Bei Zeitreihendaten müssen Sie möglicherweise den Zeitindex zurücksetzen, nachdem Sie den Index zurückgesetzt haben.
            • Bei verketteten Operationen (z. B. Filtern und anschließendem Sortieren) kann sich der Index nach jeder Operation ändern. Wenn Sie ihn zum richtigen Zeitpunkt einsetzen,reset_index()kann das den Code vorhersehbar halten.

            Pandas 常用函数Pandas Häufige Funktionen

            Andere Erweiterungen