2015-10-20 133 views
1

因此,給定一個多索引數據框,我只想返回滿足多索引中較低索引所有級別條件的行。這裏是一個小工作示例:熊貓多指數布爾索引

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

你的意思是C> 1和A = 2? – Zero

+0

是的,但我不想指定'a == 2'。這只是一個玩具的例子。 – pdevar

+0

你能澄清你在問什麼嗎?我不明白你問的是不是你用'df [df [c> 1]]'得到的'? – ako

回答

0

我最終使用groupby

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