pandas中关于set_index和reset_index的用法

本文详细介绍了如何使用Pandas库中的DataFrame进行索引操作,包括set_index方法用于设置单索引和复合索引,以及reset_index方法用于还原索引为默认的整型索引。通过实例展示了不同参数下索引的设置与还原过程。

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

1.set_index

DataFrame可以通过set_index方法,可以设置单索引和复合索引。
DataFrame.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)
append添加新索引,drop为False,inplace为True时,索引将会还原为列

>>> import numpy as np
>>> import pandas as pd
>>> data = pd.DataFrame(np.random.randn(4,4),columns=list('abcd'))
>>> data
          a         b         c         d
0  0.408933  0.234216 -0.322709 -0.970609
1 -0.090428  0.404650  0.673531  0.006823
2  0.454332  0.964864 -0.551243 -1.163152
3  0.794767  0.152712 -1.150488 -0.993685
>>> index1 = data.set_index('c')	% 将 c 列数据设为行的单索引
>>> index1
                  a         b         d
c                                      
-0.322709  0.408933  0.234216 -0.970609
 0.673531 -0.090428  0.404650  0.006823
-0.551243  0.454332  0.964864 -1.163152
-1.150488  0.794767  0.152712 -0.993685

>>> index3 = data.set_index(['b','c'])	% 将 b 和 c 列数据设为行的复合索引
>>> index3
                           a         d
b        c                            
0.234216 -0.322709  0.408933 -0.970609
0.404650  0.673531 -0.090428  0.006823
0.964864 -0.551243  0.454332 -1.163152
0.152712 -1.150488  0.794767 -0.993685
>>> index3.index
MultiIndex([( 0.2342157856566715, -0.3227085909893056),
            ( 0.4046499952174707,  0.6735314795439666),
            (  0.964864372341223, -0.5512425282648497),
            (0.15271241202265382, -1.1504879395208476)],
           names=['b', 'c'])

2.reset_index

reset_index可以还原索引,重新变为默认的整型索引

DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill=”)

level控制了具体要还原的那个等级的索引

drop为False则索引列会被还原为普通列,否则会丢失

>>> data
          a         b         c         d
0  0.408933  0.234216 -0.322709 -0.970609
1 -0.090428  0.404650  0.673531  0.006823
2  0.454332  0.964864 -0.551243 -1.163152
3  0.794767  0.152712 -1.150488 -0.993685
>>> data1 = data.reset_index()
>>> data1
   index         a         b         c         d
0      0  0.408933  0.234216 -0.322709 -0.970609
1      1 -0.090428  0.404650  0.673531  0.006823
2      2  0.454332  0.964864 -0.551243 -1.163152
3      3  0.794767  0.152712 -1.150488 -0.993685
>>> data2 = data1.reset_index()
>>> data2
   level_0  index         a         b         c         d
0        0      0  0.408933  0.234216 -0.322709 -0.970609
1        1      1 -0.090428  0.404650  0.673531  0.006823
2        2      2  0.454332  0.964864 -0.551243 -1.163152
3        3      3  0.794767  0.152712 -1.150488 -0.993685

>>> data2.iloc[1,1]
1
>>> data2.iloc[1,2]
-0.09042788786848317
>>> data2.iloc[1,0]
1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值