У меня есть Python 3.6 и Pandas 19.0. Я играю с несколькими индексами для фреймов данных.
iterables = [['bar', 'baz', 'foo', 'qux'], ['one', 'two', 'three','four']]
pd.MultiIndex.from_product(iterables, names=['first', 'second'])
arrays = [np.array(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux', 'bar', 'foo']),
np.array(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two', 'three', 'four'])]
s = pd.DataFrame(np.random.randn(10), index=arrays)
Я знаю, как получить подмножество на основе одного значения для одного из индексов, например,
s.loc[s.index.get_level_values(0)=='bar']
Out[16]:
0
bar one 1.409395
two 0.837486
three 1.290018
Как я могу получить подмножество на основе набора значений, соответствующих одному индексу? Очевидно, что синтаксис ниже не работает:
my_subset = set(['three', 'one'])
s.loc[s.index.get_level_values(1) in my_subset]
EDIT:
Что было бы самым быстрым решением для большого фрейма данных?