Python-Pandas之索引index相关函数

本文详细介绍了Pandas中如何进行数据索引的重新排序(reindex)和更换(set_index)。reindex允许对索引进行排序,若存在缺失值则填充NaN。set_index方法用于将指定列设为行索引,可配合drop参数决定是否删除原列,以及inplace参数决定是否原地修改DataFrame。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文介绍对索引进行 重新排序reindex() 以及 更换索引set_index() 时的用法,需要注意的是索引对象是无法进行修改的。

重新索引 .reindex()

重新索引不是给索引重新命名,而是对索引重新排序,如果某个索引值不存在则引入缺失值。
reindex函数参数

类型使用说明
index用于索引的新序列
method填充缺失值方法,ffill / bfill
fill_value缺失值替代值
limit最大填充

例子:

df=pd.DataFrame(np.arange(9).reshape(3,3),index=['a','c','d'],columns=['name','id','sex'])
df
>>>
>name  id	sex
a	0	1	2
c	3	4	5
d	6	7	8

df2=df.reindex(['a','b','c','d'],method='ffill')
df2
>>>
>	name id	sex
a	0	1	2
b	0	1	2
c	3	4	5
d	6	7	8
更换索引 .set_index()

在DataFrame数据中,如果不希望使用默认行索引,可以在创建数据时通过index参数来设置行索引。
如果需要将某列数据作为行索引,这时需要用到 set_index()方法,与该方法相反的方法是 reset_index()。

函数参数
set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)

keys:是要设置为索引的列表。
drop:默认为true,表示是否将作为新索引的列删除。如果为false,则保留原来的列,true则删除原列。
append:是否保留原来的索引,默认false不保留,为true则保留原索引。
inplace:是否创建一个新的dataframe,默认false则创建新的dataframe,为true时修改原dataframe。

例子:

#更换索引(区别与更新索引)
data={'name':['张三','李四','王五','小明'],
     'sex':['female','female','male','male'],
     'year':['2001','2001','2003','2002'],
     'city':['北京','上海','广州','北京']}
dataDf=pd.DataFrame(data)
dataDf
>>>
>	name	sex	year	city
0	张三	female	2001	北京
1	李四	female	2001	上海
2	王五	male	2003	广州
3	小明	male	2002	北京

dataDf.set_index(['name'],inplace=True)
dataDf
>>>
>	sex	year	city
name			
张三	female	2001	北京
李四	female	2001	上海
王五	male	2003	广州
小明	male	2002	北京

dataDf.reset_index(inplace=True)
dataDf
>>>
>name	sex	year	city
0	张三	female	2001	北京
1	李四	female	2001	上海
2	王五	male	2003	广州
3	小明	male	2002	北京

数据排序后,原数据的索引可以通过drop参数删除。

#排序时,索引变化
dataDf2=dataDf.sort_values('year')
dataDf2
>>>
>name	sex	year	city
0	张三	female	2001	北京
1	李四	female	2001	上海
3	小明	male	2002	北京
2	王五	male	2003	广州

dataDf3=dataDf2.reset_index(drop=True)
dataDf3
>>>
>	name	sex	year	city
0	张三	female	2001	北京
1	李四	female	2001	上海
2	小明	male	2002	北京
3	王五	male	2003	广州

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值