因此,给定一个多索引数据帧,我想只返回满足多索引中所有较低索引级别条件的行。这是一个小工作示例:
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
现在,我想返回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
有关如何以最有效的方式执行此操作的任何想法?
答案 0 :(得分:0)
我最终使用groupby
:
df.groupby(level=0).filter(lambda x: all([c > 1 for v in x['c']]))