Pandas DataFrame DataFrame.set_index() Fonction

Suraj Joshi 30 janvier 2023
  1. Syntaxe de la méthode pandas.DataFrame.set_index():
  2. Exemples de codes: définir l’index Pandas DataFrame avec la méthode Pandas DataFrame.set_index()
  3. Exemples de codes: définissez drop = False dans la méthode Pandas DataFrame.set_index()
  4. Exemples de codes: définissez inplace = True dans la méthode Pandas DataFrame.set_index
  5. Exemples de codes: définir plusieurs colonnes d’index à l’aide de la méthode Pandas DataFrame.set_index()
  6. Exemples de codes: comportement de Pandas Dataframe.set_index() lorsque verify_integrity vaut True
Pandas DataFrame DataFrame.set_index() Fonction

La méthode pandas.DataFrame.set_index() peut être utilisée pour définir des tableaux ou des colonnes de longueur appropriée comme index de DataFrame même après la création de DataFrame. L’index nouvellement défini peut remplacer l’index existant ou peut également être développé sur l’index existant.

Syntaxe de la méthode pandas.DataFrame.set_index():

DataFrame.set_index(
    keys, drop=True, append=False, inplace=False, verify_integrity=False
)

Paramètres

keys colonne ou liste de colonnes à définir comme index
drop Booléen. La valeur par défaut est True qui supprime la colonne à définir comme index
append Booléen. La valeur par défaut est False et elle spécifie s’il faut ajouter des colonnes à l’index existant.
inplace Booléen. Si True, modifiez l’appelant DataFrame sur place
verify_integrity Booléen. Si True, augmentez ValueError lors de la création d’un index avec des doublons. La valeur par défaut est False.

Revenir

Si inplace vaut True, il retourne un objet DataFrame avec une colonne d’index modifiée; sinon None.

Exemples de codes: définir l’index Pandas DataFrame avec la méthode Pandas DataFrame.set_index()

import pandas as pd
fruit_list = [ ('Orange', 34, 'Yes' ,'ABC') ,
             ('Mango', 24, 'No','ABC' ) ,
             ('banana', 14, 'No','ABC' ) ,
             ('Apple', 44, 'Yes',"XYZ" ) ]

df = pd.DataFrame(fruit_list, 
                  columns = ['Name',
                             'Price',
                             'In_Stock',
                             'Supplier']) 
print(df)
df_modified=df.set_index("Name")
print(df_modified)

Production:

        Name  Price In_Stock Supplier
0     Orange     34      Yes      ABC
1      Mango     24       No      ABC
2     banana     14       No      ABC
3      Apple     44      Yes      XYZ
4  Pineapple     64       No      XYZ
5       Kiwi     84      Yes      XYZ
           Price In_Stock Supplier
Name                              
Orange        34      Yes      ABC
Mango         24       No      ABC
banana        14       No      ABC
Apple         44      Yes      XYZ
Pineapple     64       No      XYZ
Kiwi          84      Yes      XYZ

Le dataframe d’origine a la plage de nombres comme colonne d’index par défaut, et dans modified_df, nous définissons la colonne Name comme index en utilisant la méthode set_index().

Exemples de codes: définissez drop = False dans la méthode Pandas DataFrame.set_index()

import pandas as pd
fruit_list = [ ('Orange', 34, 'Yes' ,'ABC') ,
             ('Mango', 24, 'No','ABC' ) ,
             ('banana', 14, 'No','ABC' ) ,
             ('Apple', 44, 'Yes',"XYZ" )  ]

df = pd.DataFrame(fruit_list, 
                  columns = ['Name',
                             'Price',
                             'In_Stock',
                             'Supplier']) 
print(df)

df_modified=df.set_index("Name",drop=False)

print(df_modified)

Production:

     Name  Price In_Stock Supplier
0  Orange     34      Yes      ABC
1   Mango     24       No      ABC
2  banana     14       No      ABC
3   Apple     44      Yes      XYZ
          Name  Price In_Stock Supplier
Name                                   
Orange  Orange     34      Yes      ABC
Mango    Mango     24       No      ABC
banana  banana     14       No      ABC
Apple    Apple     44      Yes      XYZ

Si nous définissons drop = False dans la méthode dataframe set_index, la colonne Name reste toujours en tant que colonne dans le dataframe même après avoir été définie comme colonne index.

Exemples de codes: définissez inplace = True dans la méthode Pandas DataFrame.set_index

import pandas as pd

fruit_list = [ ('Orange', 34, 'Yes' ,'ABC') ,
             ('Mango', 24, 'No','ABC' ) ,
             ('banana', 14, 'No','ABC' ) ,
             ('Apple', 44, 'Yes',"XYZ" )  ]

df = pd.DataFrame(fruit_list, columns = ['Name' , 'Price', 'In_Stock',"Supplier"]) 
print("Before Setting Index:")
print(df)
df.set_index("Name",inplace=True)
print("After Setting Index:")
print(df)

Production:

Before Setting Index:
     Name  Price In_Stock Supplier
0  Orange     34      Yes      ABC
1   Mango     24       No      ABC
2  banana     14       No      ABC
3   Apple     44      Yes      XYZ
After Setting Index:
        Price In_Stock Supplier
Name                           
Orange     34      Yes      ABC
Mango      24       No      ABC
banana     14       No      ABC
Apple      44      Yes      XYZ

Si nous définissons inplace = True dans la méthode set_index(), l’appelant DataFrame est modifié sur place.

Exemples de codes: définir plusieurs colonnes d’index à l’aide de la méthode Pandas DataFrame.set_index()

import pandas as pd

fruit_list = [ ('Orange', 34, 'Yes' ,'ABC') ,
             ('Mango', 24, 'No','ABC' ) ,
             ('banana', 14, 'No','ABC' ) ,
             ('Apple', 44, 'Yes',"XYZ" )  ]

df = pd.DataFrame(fruit_list, columns = ['Name' , 'Price', 'In_Stock',"Supplier"]) 
print("Before Setting Index:")
print(df)
df.set_index("Name",append=True,inplace=True,drop=False)
print("After Setting Index:")
print(df)

Production:

Before Setting Index:
     Name  Price In_Stock Supplier
0  Orange     34      Yes      ABC
1   Mango     24       No      ABC
2  banana     14       No      ABC
3   Apple     44      Yes      XYZ
After Setting Index:
            Name  Price In_Stock Supplier
  Name                                   
0 Orange  Orange     34      Yes      ABC
1 Mango    Mango     24       No      ABC
2 banana  banana     14       No      ABC
3 Apple    Apple     44      Yes      XYZ

Si nous définissons append = True dans la méthode set_index, il ajoute la colonne d’index nouvellement définie à l’index existant et possède plusieurs colonnes d’index pour le seul DataFrame.

Exemples de codes: comportement de Pandas Dataframe.set_index() lorsque verify_integrity vaut True

import pandas as pd

fruit_list = [
    ("Orange", 34, "Yes", "ABC"),
    ("Mango", 24, "No", "ABC"),
    ("Apple", 14, "No", "ABC"),
    ("Apple", 44, "Yes", "XYZ"),
]

df = pd.DataFrame(fruit_list, columns=["Name", "Price", "In_Stock", "Supplier"])

df_modified = df.set_index("Name", verify_integrity=True)
print(df_modified)

Production:

Traceback (most recent call last):
  .....line 3920, in set_index
    dup=duplicates))
ValueError: Index has duplicate keys: Index(['Apple'], dtype='object', name='Name')

Il déclenche ValueError car l’index a des clés en double - Apple. Il a deux Apple dans la colonne qui est définie comme étant l’index; par conséquent, il déclenche une erreur si verify_integrity est réglé sur True dans la méthode set_index().

Auteur: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Article connexe - Pandas DataFrame