Comment convertir l'index d'une Dataframe de Pandas en une colonne

Asad Riaz 30 janvier 2023
  1. df.index pour ajouter l’index comme une nouvelle colonne
  2. reset_index avec rename_axis pour renommer le nom de la colonne d’index actuelle
  3. Méthode set_index pour convertir une colonne en index
  4. MultiIndex pour mettre plusieurs couches d’index sur colonne
Comment convertir l'index d'une Dataframe de Pandas en une colonne

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

Article connexe - Pandas DataFrame