python pandas multi-index在满足条件的索引级别内全选

时间:2019-02-02 19:30:10

标签: python pandas multi-index

这是我数据库的简化版本。

                     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 个答案:

答案 0 :(得分:2)

您可以使用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