HOWTO · Pandas
Comment convertir l'index d'une Dataframe de Pandas en une colonne
Ce tutoriel montre comment convertir l'index d'une Dataframe de Pandas en une colonne, par exemple en utilisant set_index, reset_index et en créant plusieurs index
Sur cette page
Nous allons introduire différentes méthodes pour convertir l’index d’une image de données de Pandas en une colonne, comme par exemple df.index, set_index, et reset_index avec rename_axis pour renommer l’index.
Nous allons également présenter comment nous pouvons appliquer un Multi-Index à une DataFrame donnée avec plusieurs couches d’index.
df.index pour ajouter l’index comme une nouvelle colonne
La façon la plus simple d’ajouter l’index comme colonne est d’ajouter df.index comme nouvelle colonne à DataFrame.
Considérons le code suivant:
# 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)
Production:
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 avec rename_axis pour renommer le nom de la colonne d’index actuelle
Nous pouvons changer le nom de notre index, puis utiliser reset_index pour une série:
# 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)
Production:
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
Méthode set_index pour convertir une colonne en index
Nous pouvons convertir n’importe quelle colonne en index en utilisant la méthode set_index:
# 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)
Production:
a d
b
2 1.0 NaN
4 NaN NaN
4 5.0 7.0
5 5.0 NaN
Ou si nous voulons supprimer le nom de l’index, comme dans l’original, nous pouvons faire df.index.name = None:
# 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)
Production:
a d
2 1.0 NaN
4 NaN NaN
4 5.0 7.0
5 5.0 NaN
MultiIndex pour mettre plusieurs couches d’index sur colonne
Nous pouvons utiliser la fonction MultiIndex.from_product() pour faire un MultiIndex comme suit:
# 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)
Production:
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