
Durch die Verwendung von set_index() can SIE Eine vorhandene Spalte von pandas.DataFrame dem Index (Zeilenbezeichnung) zuweisen. Das Festlegen eines eindeutigen Namens für den Index unterstützt die Auswahl von Elementen mit loc und at.
Dieser Artikel hat folgenden Inhalt.
- Also verwenden Sie set_index()
- Grundlegende Verwendung
- Behalten Sie die angegebene Spalte bei:
drop
- Multi-Index-Zuständig
- Behalten Sie den ursprünglichen Index als Spalte bei
- Originalobjekt ändern:
inplace
- Index beim Lesen der CSV-Datei setzen
- Wählen Sie Zeilen und Elemente mit Index aus
Im following Artikel erfahren Sie, wie SIE den Index umbenennen, anstatt dem Index eine vorhandene Spalte zuzuweisen.
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
Also verwenden Sie set_index()
Grundlegende Verwendung
Geben SIE den Namen der Spalte an, sterben als Index in den ersten Argumentschlüsseln used Werden soll.
df_i = df.set_index('name')
print(df_i)
# 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
Behalten Sie die angegebene Spalte bei: :drop
Standardmäßig wird die angegebene Spalte gelöscht, wie im Beispiel gezeigt. If das Argument drop auf False gesetzt IST, WIRD die angegebene Spalte auf index gesetzt und in der Datenspalte verleibt.
df_id = df.set_index('name', drop=False)
print(df_id)
# name age state point
# name
# Alice Alice 24 NY 64
# Bob Bob 42 CA 92
# Charlie Charlie 18 CA 70
# Dave Dave 68 TX 70
# Ellen Ellen 24 CA 88
# Frank Frank 30 NY 57
Multi-Index-Zuständig
Durch die Verwendung von set_index() können mehrere Spalten als Multi-Index zugewiesen werden.
Nach Liste angeben
Durch die Angabe einer Liste von Spaltennamen in den ersten Argumentschlüsseln werden mehrere Spalten als Multi-Index zugewiesen.
df_mi = df.set_index(['state', 'name'])
print(df_mi)
# age point
# state name
# NY Alice 24 64
# CA Bob 42 92
# Charlie 18 70
# TX Dave 68 70
# CA Ellen 24 88
# NY Frank 30 57
Durch das Sortieren mit sort_index() WIRD es ordentlich angezeigt.
df_mi.sort_index(inplace=True)
print(df_mi)
# age point
# state name
# CA Bob 42 92
# Charlie 18 70
# Ellen 24 88
# NY Alice 24 64
# Frank 30 57
# TX Dave 68 70
Im following Artikel FINDEN SIE Laptops zum Sortieren mit sort_values() und sort_index().
Fügen Sie dem Mehrfachindex eine Spalte hinzu:append
Standardmäßig wird durch die Angabe einer neuen Spalte mit set_index() der ursprüngliche Index gelöscht.
print(df_i)
# 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
df_ii = df_i.set_index('state')
print(df_ii)
# age point
# state
# NY 24 64
# CA 42 92
# CA 18 70
# TX 68 70
# CA 24 88
# NY 30 57
If das Argument append auf True gesetzt IST, WIRD die definierte Spalte als neuer Ebenenindex hinzugefügt.
df_mi = df_i.set_index('state', append=True)
print(df_mi)
# age point
# name state
# Alice NY 24 64
# Bob CA 42 92
# Charlie CA 18 70
# Dave TX 68 70
# Ellen CA 24 88
# Frank NY 30 57
Die hinzugefügte Spalte WIRD auf die niedrigste Ebene gesetzt. Wenn Sie Ebenen tauschen möchten, verwenden Sie swaplevel().
print(df_mi.swaplevel(0, 1))
# age point
# state name
# NY Alice 24 64
# CA Bob 42 92
# Charlie 18 70
# TX Dave 68 70
# CA Ellen 24 88
# NY Frank 30 57
Behalten Sie den ursprünglichen Index als Spalte bei
Wenn Sie wie in den bisherigen Beispielen eine Spalte mit set_index() auf Index setzen, wird der ursprüngliche Index gelöscht.
Wenn SIE den ursprünglichen Index als Spalte beibehalten möchten, verwenden SIE reset_index(), um den Index einer fortlaufenden Nummer zuzuweisen, sterben bei 0 beginnt.
print(df_i)
# 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
df_ri = df_i.reset_index()
print(df_ri)
# 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
Sie können den Index in eine andere Spalte ändern, ohne dass Sie set_index() nach reset_index() verwenden.
df_change = df_i.reset_index().set_index('state')
print(df_change)
# 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
Siehe auch den following Artikel für reset_index().
Originalobjekt ändern:inplace
Standardmäßig ändert set_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.set_index('name', inplace=True)
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
Index beim Lesen der CSV-Datei setzen
Wenn beim Lesen aus einer CSV-Datei pandas.DataFrame oder pandas.Series generiert WIRD und die Originaldatei eine Spalte enthält, die als Index verwendet werden soll, can this auch beim Lesen angegeben Werden.
Beim Lesen einer Datei mit read_csv() setzt die Angabe der Spaltennummer im Argument index_col diese Spalte auf den Index.。
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
Wählen Sie Zeilen und Elemente mit Index aus
Wenn Sie wie in den Beispielen eindeutige Namen für den Index angeben, können Sie Zeilen und Elemente einfach anhand des Namens auswählen.
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
print(df.loc['Bob'])
# age 42
# state CA
# point 92
# Name: Bob, dtype: object
print(df.at['Bob', 'age'])
# 42
Weitere Informationen zu loc und at finden Sie im following Artikel.