熊猫多指数布尔索引
问题描述:
因此,给定一个多索引数据框,我只想返回满足多索引中较低索引所有级别条件的行。这里是一个小工作示例:熊猫多指数布尔索引
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
就怎么做任何思考这是最有效的方式?
答
我最终使用groupby
:
df.groupby(level=0).filter(lambda x: all([c > 1 for v in x['c']]))
你的意思是C> 1和A = 2? – Zero
是的,但我不想指定'a == 2'。这只是一个玩具的例子。 – pdevar
你能澄清你在问什么吗?我不明白你问的是不是你用'df [df [c> 1]]'得到的'? – ako