pandas 多层索引,pandas按照索引排序

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: