2012-11-13 84 views
4

考虑以下DataFrames熊猫:选择与多指标

In [136]: 
df = pd.DataFrame({'A':[1,1,2,2],'B':[1,2,1,2],'C':np.arange(10,30,5)}).set_index(['A','B']) 
df 
Out[136]: 
     C 
A B  
1 1 10 
    2 15 
2 1 20 
    2 25 

In [130]: 
vals = pd.DataFrame({'A':[1,2],'values':[True,False]}).set_index('A') 
vals 
Out[130]: 
    values 
A  
1 True 
2 False 

我怎么可以只选择与vals相应True值的df行?

如果我reset_index两个框架上我现在可以合并/加入他们和切片但我想,但我怎么能使用(多)索引?

+0

你能澄清你的意思吗?“只选择'df'的行与'vals'中的相应'True'值?我不太明白你想达到什么目的。 –

回答

7

布尔索引一路...

In [65]: df[pd.Series(df.index.get_level_values('A')).isin(vals[vals['values']].index)] 
Out[65]: 
     C 
A B  
1 1 10 
    2 15 

注意,您可以在一个多指标使用XS。

In [66]: df.xs(1) 
Out[66]: 
    C 
B  
1 10 
2 15