2012-11-13 5 views
4

다음과 같은 DataFrames팬더 : 선택 MultiIndex

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 

어떻게 valsTrue 해당 값과 df의 행을 선택할 수를 고려?

양쪽 프레임에서 I reset_index을 병합/결합 할 수는 있지만 원하는 경우 (멀티) 색인을 사용하여 어떻게 할 수 있습니까? 모든 방법

+0

'''ds'의 행을'vals'의 해당'True' 값으로 선택한다는 의미를 명확히 할 수 있습니까? 나는 당신이 원하는 것을 얻지 못합니다. –

답변

7

부울 색인 ... 당신이 multiindex에 XS를 사용할 수 있습니다

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 

참고.

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