pandas 多层索引,pandas按照索引排序
1、认识层级索引
以下示例将创建一个Series对象,Index index由两个子列表组成,第一个子列表是外部索引,第二个列表是内部索引:
importpandasaspd
importnumpyasnp
obj=pd。Series(np.random.randn(12),index=[[a , a , a , b , b , b , c , c , d , d , d],[0,1,2,0,1,2,0,1,2]])
目标文件
a0-0.201536
1-0.629058
20.766716
b0-1.255831
1-0.483727
2-0.018653
c00.788787
11.010097
2-0.187258
d01.242363
1-0.822011
2-0.085682
dtype : float 642、MultiIndex 索引对象
在上面的例子中尝试打印系列的索引类型,您将得到一个MultiIndex对象。MultiIndex对象的levels属性指示两个级别中的标签,codes属性指示每个位置中的标签,如下所示:
importpandasaspd
importnumpyasnp
obj=pd。Series(np.random.randn(12),index=[[a , a , a , b , b , b , c , c , d , d , d],[0,1,2,0,1,2,0,1,2]])
目标文件
a00.035946
1-0.867215
2-0.053355
b0-0.986616
1n
bsp;0.026071
2-0.048394
c00.251274
10.217790
21.137674
d0-1.245178
11.234972
2-0.035624
dtype:float64
>>>
>>>type(obj.index)
<class'pandas.core.indexes.multi.MultiIndex'>
>>>
>>>obj.index
MultiIndex([('a',0),
('a',1),
('a',2),
('b',0),
('b',1),
('b',2),
('c',0),
('c',1),
('c',2),
('d',0),
('d',1),
('d',2)],
)
>>>obj.index.levels
FrozenList([['a','b','c','d'],[0,1,2]])
>>>
>>>obj.index.codes
FrozenList([[0,0,0,1,1,1,2,2,2,3,3,3],[0,1,2,0,1,2,0,1,2,0,1,2]])通常可以使用 from_arrays() 方法来将数组对象转换为 MultiIndex 索引对象:
>>>arrays=[[1,1,2,2],['red','blue','red','blue']]
其他常用方法见下图:
3、提取值
对于这种有多层索引的对象,如果只传入一个参数,则会对外层索引进行提取,其中包含对应所有的内层索引,如果传入两个参数,则第一个参数表示外层索引,第二个参数表示内层索引,示例如下:
>>>importpandasaspd
4、交换分层与排序
MultiIndex 对象的 swaplevel() 方法可以交换外层与内层索引,sortlevel() 方法会先对外层索引进行排序,再对内层索引进行排序,默认是升序,如果设置 ascending 参数为 False 则会降序排列,示例如下:
>>>importpandasaspd
更多Python知识,请点击Python视频教程!!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。