Pandas DataFrame DataFrame.set_index() Função
-
Sintaxe de
pandas.DataFrame.set_index()Método: -
Códigos de exemplo: definir o índice Pandas DataFrame com o método Pandas
DataFrame.set_index() -
Códigos de exemplo: Set
drop=Falsein PandasDataFrame.set_index()Método -
Códigos de exemplo: defina
inplace = Trueno método PandasDataFrame.set_index -
Códigos de exemplo: Coluna de índice múltiplo utilizando Pandas
DataFrame.set_index()Método -
Códigos de exemplo: Pandas
Dataframe.set_index()Comportamento quando averify_integrityéTrue
O método pandas.DataFrame.set_index() pode ser utilizado para definir arrays ou colunas de comprimento apropriado como um índice de DataFrame, mesmo após a criação do DataFrame. O novo índice set_index pode substituir o índice existente ou também pode ser expandido sobre o existente.
Sintaxe de pandas.DataFrame.set_index() Método:
DataFrame.set_index(
keys, drop=True, append=False, inplace=False, verify_integrity=False
)
Parâmetros
keys |
coluna ou lista de colunas a serem definidas como índice |
drop |
Booleano. O valor padrão é True, que apaga a coluna a ser definida como índice |
append |
Booleano. O valor padrão é False, e especifica se as colunas devem ser anexadas ao índice existente. |
inplace |
Booleano. Se True, modificar o DataFrame de chamada no local |
verify_integrity |
Booleano. Se True, aumentar o ValueError ao criar um índice com duplicatas. O valor padrão é False. |
Retornar
Se inplace for True, ele retorna um objeto DataFrame com coluna de índice modificada; caso contrário, None.
Códigos de exemplo: definir o índice Pandas DataFrame com o método 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)
Resultado:
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
O Dataframe original tem o intervalo de números como coluna de índice padrão, e em modified_df, definimos a coluna Name como o índice utilizando o método set_index().
Códigos de exemplo: Set drop=False in Pandas DataFrame.set_index() Método
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)
Resultado:
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 definirmos drop=False no método set_index do dataframe, a coluna Name ainda permanece como uma coluna no Dataframe mesmo depois de ser definida como a coluna index.
Códigos de exemplo: defina inplace = True no método 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)
Resultado:
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 definirmos inplace=True no método set_index(), o chamador dataFrame será modificado no local.
Códigos de exemplo: Coluna de índice múltiplo utilizando Pandas DataFrame.set_index() Método
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)
Resultado:
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 definirmos append=True no método set_index, ele anexa a coluna de índice recém-definida ao índice existente e tem várias colunas de índice para o único DataFrame.
Códigos de exemplo: Pandas Dataframe.set_index() Comportamento quando a 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)
Resultado:
Traceback (most recent call last):
.....line 3920, in set_index
dup=duplicates))
ValueError: Index has duplicate keys: Index(['Apple'], dtype='object', name='Name')
Aumenta o ValueError porque o índice tem chaves duplicadas - Apple. Ele tem duas Apple na coluna que está definida para ser o índice; portanto, ele levanta um erro se verify_integrity estiver definida para ser True no método set_index().
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn