@sunsexsurf
IT & creative

Как сделать iloc для мультииндекса в pandas?

У меня есть df, сгруппированных с использованием мультииндекса (применен метод .groupby по двум столбцам).
Выполняю:
df_by_month_group.index.levels
Получаю:
FrozenList([[9, 10, 11], ['one', 'two', 'three']])
таким образом я могу получить доступ к первой части этого списка:
df_by_month_group.index.levels[0]
Получаю:
Int64Index([9, 10, 11], dtype='int64', name='month')

выполняю цикл
for i in df_by_month_group.index.levels[0]:
    print(i)

ожидаемо получаю
9
10
11


А вот iloc для этого датафрейма не работает:
df_by_month_group.iloc[df_by_month_group.index.levels[0]==9]

IndexError: Boolean index has wrong length: 3 instead of 159

Как поправить?
Мне нужно обрезать мой исходный датафрейм таким образом, чтобы остались только значения, у которых в Мультииндексе первым элементом стоит 9.

Спасибо.

UPD:
(воспроизводимый результат)
first = [9,9,9,10,10,10]
second = ['one', 'two', 'three', 'one', 'two', 'three']
third = [10, 20, 30, 20, 40, 50]
test = pd.DataFrame(zip(first, second, third), columns=['mon', 'name', 'val'])
test_gr = test.groupby(['mon', 'name']).sum()
test_gr
  • Вопрос задан
  • 446 просмотров
Решения вопроса 1
@sunsexsurf Автор вопроса
IT & creative
Решение:

test_gr[test_gr.index.get_level_values(0)==9]
или
test_gr.iloc[test_gr.index.get_level_values(0)==9]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы