Wie man den Index eines Pandas-DataFrame in eine Spalte umwandelt

Asad Riaz 30 Januar 2023
  1. df.index um den Index als neue Spalte hinzuzufügen
  2. reset_index mit rename_axis um den aktuellen Index-Spaltennamen umzubenennen
  3. set_index Methode um die Spalte in einen Index umzuwandeln
  4. MultiIndex um mehrere Schichten von indexes auf column zu setzen
Wie man den Index eines Pandas-DataFrame in eine Spalte umwandelt

Wir werden verschiedene Methoden vorstellen, um den index eines Pandas DataFrame in eine Spalte umzuwandeln, wie z. B. df.index, set_index, und reset_index mit rename_axis, um den index umzubenennen.

Wir werden auch vorstellen, wie wir Multi-Index auf einen gegebenen DataFrame mit mehreren Indexschichten anwenden können.

df.index um den Index als neue Spalte hinzuzufügen

Der einfachste Weg, einen Index als Spalte hinzuzufügen, ist das Hinzufügen von df.index als neue Spalte zu DataFrame.

Betrachten Sie den folgenden Code:

# python 3.x
import pandas as pd

df = pd.DataFrame(
    [(1, 2, None), (None, 4, None), (5, None, 7), (5, None, None)],
    columns=["a", "b", "d"],
)
df["index"] = df.index
print(df)

Ausgabe:

     a    b    d  index1
0  1.0  2.0  NaN       0
1  NaN  4.0  NaN       1
2  5.0  NaN  7.0       2
3  5.0  NaN  NaN       3

reset_index mit rename_axis um den aktuellen Index-Spaltennamen umzubenennen

Wir können den Namen unseres index ändern und dann reset_index zu einer Series verwenden:

# python 3.x
import pandas as pd

df = pd.DataFrame(
    [(1, 2, None), (None, 4, None), (5, None, 7), (5, None, None)],
    columns=["a", "b", "d"],
)
df = df.rename_axis("index").reset_index()
print(df)

Ausgabe:

   index    a    b    d
0      0  1.0  2.0  NaN
1      1  NaN  4.0  NaN
2      2  5.0  NaN  7.0
3      3  5.0  NaN  NaN

set_index Methode um die Spalte in einen Index umzuwandeln

Wir können jede Spalte mit der Methode set_index in index umwandeln:

# python 3.x
import pandas as pd

df = pd.DataFrame(
    [(1, 2, None), (None, 4, None), (5, 4, 7), (5, 5, None)], columns=["a", "b", "d"]
)
df.set_index("b", inplace=True)
print(df)

Ausgabe:

     a    d
b          
2  1.0  NaN
4  NaN  NaN
4  5.0  7.0
5  5.0  NaN

Oder wenn wir den index Namen entfernen wollen, wie im Original, können wir df.index.name = None ausführen:

# python 3.x
import pandas as pd

df = pd.DataFrame(
    [(1, 2, None), (None, 4, None), (5, 4, 7), (5, 5, None)], columns=["a", "b", "d"]
)
df.set_index("b", inplace=True)
df.index.name = None
print(df)

Ausgabe:

     a    d
2  1.0  NaN
4  NaN  NaN
4  5.0  7.0
5  5.0  NaN

MultiIndex um mehrere Schichten von indexes auf column zu setzen

Wir können die Funktion MultiIndex.from_product() verwenden, um einen MultiIndex wie folgt zu erstellen:

# python 3.x
import pandas as pd
import numpy as np

index = pd.MultiIndex.from_product(
    [["Burger", "Steak", "Sandwich"], ["Half", "Full"]], names=["Item", "Type"]
)
df = pd.DataFrame(
    index=index, data=np.random.randint(0, 10, (6, 4)), columns=list("abcd")
)
print(df)

Ausgabe:

               a  b  c  d
Item     Type            
Burger   Half  0  3  9  1
         Full  2  2  0  5
Steak    Half  8  4  5  5
         Full  5  8  0  7
Sandwich Half  2  8  9  5
         Full  4  4  5  9

Verwandter Artikel - Pandas DataFrame