pandas
索引
看过来
《pandas 教程》 持续更新中,可作为 pandas 入门进阶课程、pandas 中文手册、用法大全,配有案例讲解和速查手册。提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。查看更新日志。作者开办 Python 数据分析培训,详情 Python 数据分析培训。
![]() |
本教程作者所著新书《深入浅出Pandas:利用Python进行数据处理与分析》(ISBN:9787111685456)已由机械工业出版社出版上市,各大电商平台有售,欢迎:查看详情并关注购买。 |
多层索引组成的数据相对来说复杂一点,在确定需求后我们要清晰判断是哪个层级下的数据,充分运用以下的内容进行各角度的数据筛选。
需要注意的是,如果行或者列其中一个是单层索引和之前的用户一样,本例中行和列全是多层索引。
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
无「盖若」授权,请勿以任何形式转载,公众号:gairuo
Copyright © 2019 - 2023
Gairuo.com All Rights Reserved v7.2.0.0403
京公网安备11010502033395号
京ICP备15019454号-4