У меня есть pandas dataframe с 3 уровнями MultiIndex. Я пытаюсь вывести строки этого блока данных в соответствии со списком значений, которые соответствуют двум уровням.
У меня есть что-то вроде этого:
ix = pd.MultiIndex.from_product([[1, 2, 3], ['foo', 'bar'], ['baz', 'can']], names=['a', 'b', 'c'])
data = np.arange(len(ix))
df = pd.DataFrame(data, index=ix, columns=['hi'])
print(df)
hi
a b c
1 foo baz 0
can 1
bar baz 2
can 3
2 foo baz 4
can 5
bar baz 6
can 7
3 foo baz 8
can 9
bar baz 10
can 11
Теперь я хочу взять все строки, в которых индексы "b" и "c" находятся в этом индексе:
ix_use = pd.MultiIndex.from_tuples([('foo', 'can'), ('bar', 'baz')], names=['b', 'c'])
то есть. значения hi
, имеющие ('foo', 'can')
или ('bar', 'baz')
в уровнях b
и c
соответственно: (1, 2, 5, 6, 9, 10)
.
Итак, я хотел бы взять slice(None)
на первом уровне и вытащить определенные кортежи на втором и третьем уровнях.
Первоначально я думал, что передача объекта с несколькими индексами в .loc выдержит значения/уровни, которые я хотел, но это не работает. Какой лучший способ сделать что-то подобное?