python pandas multi-index在满足条件的索引级别内选择所有[重复]
Posted
技术标签:
【中文标题】python pandas multi-index在满足条件的索引级别内选择所有[重复]【英文标题】:python pandas multi-index select all within index level where criteria is met [duplicate] 【发布时间】:2019-06-27 01:08:46 【问题描述】:这是我的数据库的简单版本。
A B
Store Product Year
A 1 2014 12 63
2 2015 32 5
3 2016 45 0
B 1 2014 45 0
2 2015 6 19
3 2016 7 4
C 1 2014 98 5
2 2015 54 43
3 2016 28 0
D 1 2014 4 6
2 2015 32 67
3 2016 1 5
我正在尝试选择 2016 年 B 列中的值为零的所有商店。所以在这种情况下,我希望选择商店 A 和 C。
df = df[df['B']==0]
只选择 B = 0 的单个行。而我想要的是选择这个
A B
Store Product Year
A 1 2014 12 63
2 2015 32 5
3 2016 45 0
C 1 2014 98 5
2 2015 54 43
3 2016 28 0
提前感谢您的帮助或建议。
【问题讨论】:
【参考方案1】:您可以使用index.get_level_values
创建掩码,然后进行布尔索引:
mask = df[(df.index.get_level_values('Year') == 2016) & (df['B']==0)].index.get_level_values('Store')
df[df.index.get_level_values('Store').isin(mask)]
A B
Store Product Year
A 1 2014 12 63
2 2015 32 5
3 2016 45 0
C 1 2014 98 5
2 2015 54 43
3 2016 28 0
【讨论】:
谢谢,很好用以上是关于python pandas multi-index在满足条件的索引级别内选择所有[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Pandas Multi-index DataFrame:聚合组内的子组