Pandas DataFrame DataFrame.set_index() Funktion

Suraj Joshi 30 Januar 2023
  1. Syntax der Methode pandas.DataFrame.set_index():
  2. Beispiel-Codes: Pandas DataFrame-Index setzen mit Pandas DataFrame.set_index() Methode
  3. Beispiel-Codes: Setzen von drop=False in Pandas DataFrame.set_index() Methode
  4. Beispiel-Codes: Setzen von inplace=True in Pandas DataFrame.set_index Methode
  5. Beispiel-Codes: Setzen mehrerer Indexspalten mit Pandas DataFrame.set_index() Methode
  6. Beispiel-Codes: Pandas Dataframe.set_index() Verhalten Wenn Verify_integrity True ist
Pandas DataFrame DataFrame.set_index() Funktion

Die Methode pandas.DataFrame.set_index() kann verwendet werden, um Arrays oder Spalten geeigneter Länge als Index von DataFrame zu setzen, auch nach der Erstellung von DataFrame. Der neu gesetzte Index kann den bestehenden Index ersetzen oder auch auf den bestehenden Index erweitert werden.

Syntax der Methode pandas.DataFrame.set_index():

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

Parameter:

keys Spalte oder Liste von Spalten, die als Index gesetzt werden sollen
drop Boolesch. Der Standardwert ist True, der die Spalte löscht, die als Index gesetzt werden soll.
append Boolesch. Der Standardwert ist False, und er gibt an, ob Spalten an den bestehenden Index angehängt werden sollen.
inplace Boolesch. Wenn True, modifizieren Sie den aufrufenden DataFrame an Ort und Stelle
Integrität_verifizieren Boolesch. Falls True, erhöhen Sie ValueError beim Erstellen eines Index mit Duplikaten. Der Standardwert ist False.

Geben Sie zurück

Wenn inplace gleich True ist, gibt es ein DataFrame-Objekt mit modifizierter Indexspalte zurück; andernfalls None.

Beispiel-Codes: Pandas DataFrame-Index setzen mit Pandas DataFrame.set_index() Methode

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)

Ausgabe:

        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

Der originale Dataframe hat den Zahlenbereich als Standardindex-Spalte, und in modified_df setzen wir die Spalte Name mit der Methode set_index() als Index.

Beispiel-Codes: Setzen von drop=False in Pandas DataFrame.set_index() Methode

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)

Ausgabe:

     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

Wenn wir drop=False in der Methode set_index des DataFrame setzen, bleibt die Spalte Name als Spalte im Dataframe erhalten, auch nachdem sie als Spalte index gesetzt wurde.

Beispiel-Codes: Setzen von inplace=True in Pandas DataFrame.set_index Methode

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)

Ausgabe:

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

Wenn wir inplace=True in der Methode set_index() setzen, wird der Aufrufer dataFrame an Ort und Stelle modifiziert.

Beispiel-Codes: Setzen mehrerer Indexspalten mit Pandas DataFrame.set_index() Methode

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)

Ausgabe:

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

Wenn wir append=True in der set_index-Methode setzen, hängt sie die neu gesetzte Indexspalte an den bestehenden Index an und hat mehrere Indexspalten für den einzelnen DataFrame.

Beispiel-Codes: Pandas Dataframe.set_index() Verhalten Wenn Verify_integrity True ist

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)

Ausgabe:

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

Es wird ValueError ausgegeben, weil der Index doppelte Schlüssel hat - Apple. Er hat zwei Apple in der Spalte, die als Index gesetzt ist; daher erzeugt er einen Fehler, wenn verify_integrity in der Methode set_index() auf True gesetzt ist.

Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Verwandter Artikel - Pandas DataFrame