Панды: выбор с MultiIndex

Учитывая следующие 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

Как я могу выбрать только строкиdf с соответствующимиTrue значения в?vals

Если яreset_index в обоих кадрах теперь я могу объединить / объединить их и нарезать как угодно, но как я могу это сделать, используя (мульти) индексы?

 Calvin Cheng13 нояб. 2012 г., 10:33
Вы можете уточнить, что вы подразумеваете под "выберите только строкиdf с соответствующимиTrue значения в "vals? Я нене совсем то, что вы хотите достичь.

Ответы на вопрос(1)

Решение Вопроса

логическое индексирование полностью ...

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

Ваш ответ на вопрос