Wie man den Index eines Pandas-DataFrame in eine Spalte umwandelt
-
df.indexum den Index als neue Spalte hinzuzufügen -
reset_indexmitrename_axisum den aktuellen Index-Spaltennamen umzubenennen -
set_indexMethode um die Spalte in einen Index umzuwandeln -
MultiIndexum mehrere Schichten vonindexesaufcolumnzu setzen
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
- Wie man Pandas DataFrame-Spaltenüberschriften als Liste erhält
- Pandas DataFrame-Spalte löschen
- Wie man DataFrame-Spalte in Datetime in Pandas konvertiert
- Wie konvertiert man eine Fließkommazahl in eine Ganzzahl in Pandas DataFrame
- Wie man Pandas-DataFrame nach den Werten einer Spalte sortiert
- Wie erhält man das Aggregat der Pandas gruppenweise und sum