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:聚合组内的子组

Pandas 使用索引名称作为列名创建 Dataframe

pandas:如何使用多索引运行数据透视?

Pandas Pivot Table - 重新组织多索引的顺序

python pandas怎么用

python(pandas模块)?