Pandas DataFrame DataFrame.set_index()関数
-
pandas.DataFrame.set_index()メソッドの構文: -
コード例:Pandas
DataFrame.set_index()メソッドを使用して Pandas DataFrame インデックスを設定する -
コード例:Pandas の
DataFrame.set_index()メソッドでdrop = Falseを設定する -
コード例:Pandas の
DataFrame.set_indexメソッドでinplace = Trueを設定する -
コード例:Pandas の
DataFrame.set_index()メソッドを使用して複数のインデックス列を設定する -
コード例:
verify_integrityがTrueの場合の Pandas のDataframe.set_index()の動作
pandas.DataFrame.set_index() メソッドを使用すると、DataFrame の作成後でも、適切な長さの配列または列を DataFrame のインデックスとして設定できます。新しく設定されたインデックスは、既存のインデックスを置き換えることも、既存のインデックスを拡張することもできます。
pandas.DataFrame.set_index() メソッドの構文:
DataFrame.set_index(
keys, drop=True, append=False, inplace=False, verify_integrity=False
)
パラメーター
keys |
インデックスとして設定される列または列のリスト |
drop |
ブール。デフォルト値は True で、インデックスとして設定する列を削除します |
append |
ブール。デフォルト値は False で、既存のインデックスに列を追加するかどうかを指定します。 |
inplace |
ブール。True の場合、呼び出し元の DataFrame をインプレースで変更します |
verify_integrity |
ブール。True の場合、重複したインデックスを作成するときに ValueError を送出します。デフォルト値は False です。 |
戻り値
inplace が True の場合、変更されたインデックス列を持つ DataFrame オブジェクトを返します。それ以外の場合は None。
コード例:Pandas DataFrame.set_index() メソッドを使用して Pandas DataFrame インデックスを設定する
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)
出力:
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
元の Dataframe にはデフォルトのインデックス列として数値の範囲があり、modified_df では、set_index() メソッドを使用して列として Name をインデックスとして設定します。
コード例:Pandas の DataFrame.set_index() メソッドで drop = False を設定する
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)
出力:
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
DataFrame の set_index メソッドで drop = False を設定した場合、Name 列は index 列として設定された後でも、Dataframe の列として残ります。
コード例:Pandas の DataFrame.set_index メソッドで inplace = True を設定する
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)
出力:
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
set_index() メソッドで inplace = True を設定すると、呼び出し元の dataFrame はインプレースで変更されます。
コード例: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)
出力:
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
set_index メソッドで append = True を設定すると、新しく設定されたインデックス列が既存のインデックスに追加され、単一の DataFrame. に複数のインデックス列が含まれます。
コード例:verify_integrity が True の場合の Pandas の Dataframe.set_index() の動作
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)
出力:
Traceback (most recent call last):
.....line 3920, in set_index
dup=duplicates))
ValueError: Index has duplicate keys: Index(['Apple'], dtype='object', name='Name')
インデックスには重複したインデックス-Apple があるため、ValueError が発生します。インデックスに設定されている列に 2つの Apple があります。したがって、set_index() メソッドで verify_integrity が True に設定されている場合、エラーが発生します。
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn