看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
多层索引组成的数据相对来说复杂一点,在确定需求后我们要清晰判断是哪个层级下的数据,充分运用以下的内容进行各角度的数据筛选。
需要注意的是,如果行或者列其中一个是单层索引和之前的用户一样,本例中行和列全是多层索引。
df.loc[(1, '男')] # 一年级男
df.loc[1:2] # 一二两年级数据
df['2020'] # 整个一级索引下
df[('2020','上半年')] # 指定二级索引
df['2020']['上半年'] # 同上
df.loc[(1, '男'), '2020'] # 只显示2020年一年级男
df.loc[:, (slice(None), '下半年')] # 只看下半年的
df.loc[(slice(None), '女'),:] # 只看女生
df.loc[1, (slice(None)),:] # 只看1班
df.loc[:, ('2020', slice(None))] # 只看 2020 年的
和单层索引的数据查询一样,不过在选择列上要按多层的规则。
df[df[('2020','上半年')] > 80]
切片使用:
idx = pd.IndexSlice
idx[0] # 0
idx[:] # slice(None, None, None)
idx[0,'x'] # (0, 'x')
idx[0:3] # slice(0, 3, None)
idx[0.1:1.5] # slice(0.1, 1.5, None)
idx[0:5,'x':'y'] # (slice(0, 5, None), slice('x', 'y', None))
查询应用:
idx = pd.IndexSlice
df.loc[idx[:,['男']],:] # 只显示男
df.loc[:,idx[:,['上半年']]] # 只显示上半年
df.xs((1, '男')) # 一年级男生
df.xs('2020', axis=1) # 2020 年
df.xs('男', level=1) # 所有男生
df.T # 行列转置
TODO
pandas.DataFrame.xs
ref:
https://jessicastringham.net/2019/12/10/multiindex/
https://www.jianshu.com/p/2c1c8fbee55a
更新时间:2022-04-04 10:26:16 标签:pandas 索引