Pandas 多索引布尔索引

Pandas multiindex boolean indexing

所以给定一个多索引数据框,我想 return 只有满足多索引中较低索引的所有级别的条件的行。这是一个小的工作示例:

df = pd.DataFrame({'a': [1, 1, 2, 2], 'b': [1, 2, 3, 4], 'c': [0, 2, 2, 2]})
df = df.set_index(['a', 'b'])

print(df)

输出:

     c
a b   
1 1  0
  2  2
2 3  2
  4  2

现在,我想 return c > 1 的条目。例如,我想做一些像

df[df[c > 1]]

输出:

     c
a b   
1 2  2
2 3  2
  4  2

但是我想得到

输出:

     c
a b   
2 3  2
  4  2

关于如何以最有效的方式做到这一点有什么想法吗?

我最终使用了 groupby:

df.groupby(level=0).filter(lambda x: all([c > 1 for v in x['c']]))