Создание мультииндекса pandas

Помогите пожалуйста разобраться с мультииндексами. Есть датафрейм

исходный df Я хочу объединить данные по ID: df.set_index([df.ID, df.index]), в этом случае ожидаемо получаю

Но мне нужно, чтобы нумерация второго индекса начиналась с нуля для каждого ID. Так:

Можно было бы сделать так: df.set_index([df.ID, [0, 1, 2, ...]*n), n -- количество ID, но у меня не фиксированное количество элементов для каждого ID.

Помогите, пожалуйста, как можно это сделать.


Ответы (1 шт):

Автор решения: splash58

Можно создать временную колонку и использовать ее как второй уровень индекса

>>> df['level1'] = df.groupby('ID').cumcount()
>>> df
     ID  col  level1
0  id_1    3       0
1  id_1    4       1
2  id_1    1       2
3  id_2    2       0
4  id_2    3       1
>>> df.set_index(['ID', 'level1'], drop=True)
             col
ID   level1     
id_1 0         3
     1         4
     2         1
id_2 0         2
     1         3
→ Ссылка