Funzione Pandas DataFrame DataFrame.set_index()

Suraj Joshi 30 gennaio 2023
  1. Sintassi del metodo pandas.DataFrame.set_index():
  2. Codici di esempio: imposta l’indice DataFrame di Pandas con il metodo Pandas DataFrame.set_index()
  3. Codici di esempio: imposta drop=False nel metodo Pandas DataFrame.set_index()
  4. Codici di esempio: imposta inplace=True nel metodo Pandas DataFrame.set_index
  5. Codici di esempio: imposta più colonne di indice utilizzando il metodo Pandas DataFrame.set_index()
  6. Codici di esempio: Pandas Dataframe.set_index() Comportamento quando verify_integrity è True
Funzione Pandas DataFrame DataFrame.set_index()

Il metodo pandas.DataFrame.set_index() può essere utilizzato per impostare array o colonne di lunghezza appropriata come indice di DataFrame anche dopo la creazione di DataFrame. L’indice appena impostato può sostituire l’indice esistente o può anche essere espanso su quello esistente.

Sintassi del metodo pandas.DataFrame.set_index():

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

Parametri

keys colonna o lista di colonne da impostare come indice
drop Booleano. Il valore predefinito è True che elimina la colonna da impostare come indice
append Booleano. Il valore predefinito è False e specifica se aggiungere colonne all’indice esistente.
inplace Booleano. Se True, modifica il DataFrame del chiamante sul posto
verify_integrity Booleano. Se True, solleva ValueError quando si crea un indice con duplicati. Il valore predefinito è False.

Ritorno

Se inplace è True, restituisce un oggetto DataFrame con colonna indice modificata; altrimenti None.

Codici di esempio: imposta l’indice DataFrame di Pandas con il metodo 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)

Produzione:

        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

Il Dataframe originale ha l’intervallo di numeri come colonna dell’indice di default, e in modified_df, impostiamo la colonna Name come indice usando il metodo set_index().

Codici di esempio: imposta drop=False nel metodo 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)

Produzione:

     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

Se impostiamo drop=False nel metodo dataframe set_index, la colonna Name rimane ancora come una colonna nel Dataframe anche dopo che è stata impostata come colonna index.

Codici di esempio: imposta inplace=True nel metodo 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)

Produzione:

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

Se impostiamo inplace=True nel metodo set_index(), il chiamante dataFrame viene modificato sul posto.

Codici di esempio: imposta più colonne di indice utilizzando il metodo 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)

Produzione:

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

Se impostiamo append=True nel metodo set_index, aggiunge la colonna dell’indice appena impostata all’indice esistente e ha più colonne dell’indice per il singolo DataFrame.

Codici di esempio: Pandas Dataframe.set_index() Comportamento quando verify_integrity è 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)

Produzione:

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

Solleva ValueError perché l’indice ha chiavi duplicate - Apple. Ha due Apple nella colonna che è impostata per essere l’indice; quindi, solleva un errore se verify_integrity è impostato su True nel metodo set_index().

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Articolo correlato - Pandas DataFrame