Pandas DataFrame 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
有多个索引列。
示例代码:Pandas Dataframe.set_index()
在 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)
输出:
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
。它有两个 Apple
在列中被设置为索引;因此,如果 set_index()
方法中的 verify_integrity
被设置为 True
,它就会引发一个错误。
相关文章
Pandas DataFrame DataFrame.to_excel() 函数
发布时间:2024/04/22 浏览次数:68 分类:Python
-
DataFrame.to_excel()函数将 DataFrame 数据转储到 excel 文件中,单张或多张。
Pandas DataFrame DataFrame.sample() 函数
发布时间:2024/04/22 浏览次数:146 分类:Python
-
Pandas DataFrame sample()函数生成一个 DataFrame 的随机行或列的样本。
Pandas DataFrame DataFrame.reindex() 函数
发布时间:2024/04/22 浏览次数:60 分类:Python
-
Pandas DataFrame reindex()函数可以改变 DataFrame 的行或列的索引。
Pandas DataFrame DataFrame.query() 函数
发布时间:2024/04/22 浏览次数:109 分类:Python
-
DataFrame.query()方法从调用者 DataFrame 中过滤符合特定条件的行。
Pandas DataFrame DataFrame.plot.bar() 函数
发布时间:2024/04/22 浏览次数:165 分类:Python
-
Pandas DataFrame.plot.bar()函数沿着指定的轴绘制一个条形图。
Pandas DataFrame DataFrame.min() 函数
发布时间:2024/04/22 浏览次数:76 分类:Python
-
DataFrame min()函数获取 DataFrame 对象在指定轴上的最小值。
Pandas DataFrame DataFrame.median() 函数
发布时间:2024/04/22 浏览次数:189 分类:Python
-
DataFrame median()函数计算 DataFrame 对象在指定轴上的值的中位数。
Pandas DataFrame DataFrame.mean() 函数
发布时间:2024/04/22 浏览次数:142 分类:Python
-
DataFrame mean()函数计算 DataFrame 对象在指定轴上的值的平均值。
Pandas DataFrame DataFrame.max() 函数
发布时间:2024/04/22 浏览次数:187 分类:Python
-
DataFrame max()函数获取 DataFrame 对象在指定轴上的最大值。