Pandas系列(十三)分层索引MultiIndex
在上一小节Pandas系列(十三)实现groupby分组统计中可以实现多个key
进行聚合,而这就是分层索引。
使用这种在一个维度上拥有多个索引的层级,可以表达更高维度数据的形式。能够实现更高效的数据筛选。
获取数据
Series的分层索引MultiIndex
使用之前的多key索引,得到如下结果:
可以看到公司这一列下有一些空白,空白的意思是使用上面的值。他的index是由一个元组组成的list。
对于这种只有两级的series
,可以使用方法unstack
将二级索引变成列:
reset_index()
方法可以将索引之后的结果转成一个dataframe
:
Series有多层索引怎样筛选数据?
对于多层索引的取值,可以采用元组的形式:
如上例所示:如果想直接筛选第二级的索引,就可以将第一级设置为:
。
DataFrame的多层索引MultiIndex
对于DataFrame
格式的数据,可以采用set_index()
方法,将DataFrame
的index
设置为多层索引:
它的index
也是MultiIndex
的,里面是一个元组,与Series
类似。如果对Index
进行排序的话,直接调用sort_index
方法就可以实现:
DataFrame有多层索引怎样筛选数据?
这里要区分多层索引,和多个key
索引:
-
元组(key1,key2)代表筛选多层索引,其中
key1
是索引第一级,key2
是第二级,比如key1=JD
,key2=2019-10-02
。 -
列表[key1,key2]代表同一层的多个KEY,其中
key1
和key2
是并列的同级索引,比如key1=JD
,key2=BIDU
。
- 选中二级索引取不同的列:
-
列表取不同的
key
:
- 元组和列表混合索引:
- 筛选这一索引的所有内容:
利用slice(None)
可以筛选这一索引的所有内容: