Pandas df.reset_index()-Funktion
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 (wenn
inplace=False), oderNone(wenninplace=True)。 - Im zurückgegebenen DataFrame wurde der Index zurückgesetzt. Der ursprüngliche Index (falls
drop=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 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:
- Nach dem Sortieren wird der Index zu 1, 0, 2, nicht mehr fortlaufend 0, 1, 2.
- Nach der Verwendung von
reset_index(), der Index wird auf 0, 1, 2 zurückgesetzt. - 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 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 von
drop=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 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.
- Verwendung
reset_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 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 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.
- Verwendung
reset_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 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 von
inplace=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 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 die
levelParameter, um auszuwählen, welche Indexebene zurückgesetzt werden soll. 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 Sie
reset_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.
Hinweise
Andere Erweiterungen
Gängige Pandas-Funktionen