Um ein wenig mehr Klarheit zu schaffen, werfen wir einen Blick auf ein DataFrame mit zwei Ebenen in seinem Index (einem MultiIndex).
index = pd.MultiIndex.from_product([['TX', 'FL', 'CA'],
['Norden', 'Süden']],
names=['Bundesland', 'Richtung'])
df = pd.DataFrame(index=index,
data=np.random.randint(0, 10, (6,4)),
columns=list('abcd'))
![Bildbeschreibung hier eingeben]()
Die reset_index
Methode, aufgerufen mit den Standardparametern, konvertiert alle Indexebenen in Spalten und verwendet einen einfachen RangeIndex
als neuen Index.
df.reset_index()
![Bildbeschreibung hier eingeben]()
Verwenden Sie den level
Parameter, um zu steuern, welche Indexebenen in Spalten umgewandelt werden. Wenn möglich, verwenden Sie den Ebenennamen, der expliziter ist. Wenn es keine Ebenennamen gibt, können Sie auf jede Ebene anhand ihrer ganzzahligen Position verweisen, die bei 0 von außen beginnt. Sie können hier einen skalaren Wert oder eine Liste aller Indizes verwenden, die Sie zurücksetzen möchten.
df.reset_index(level='Bundesland') # gleichbedeutend mit df.reset_index(level=0)
![Bildbeschreibung hier eingeben]()
Falls Sie in dem seltenen Fall die den Index beibehalten und den Index in eine Spalte umwandeln möchten, können Sie folgendes tun:
# für eine einzelne Ebene
df.assign(Bundesland=df.index.get_level_values('Bundesland'))
# für alle Ebenen
df.assign(**df.index.to_frame())