Zamień Pandy Multi-Index w kolumnę
Mam ramkę danych z 2 poziomami indeksów:
value
Trial measurement
1 0 13
1 3
2 4
2 0 NaN
1 12
3 0 34
Które chcę zamienić w to:
Trial measurement value
1 0 13
1 1 3
1 2 4
2 0 NaN
2 1 12
3 0 34
Jak najlepiej mogę to zrobić?
Potrzebuję tego, ponieważ chcę agregować dane zgodnie z instrukcją tutaj , ale nie mogę tak wybrać moich kolumn, jeśli są używane jako indeksy.
2 answers
reset_index () jest metodą ramki danych Panda, która przeniesie wartości indeksu do ramki danych jako kolumny. Domyślnym ustawieniem parametru jest drop = False (które zachowa wartości indeksu jako kolumny).
Wszystko co musisz zrobić dodaj .reset_index(inplace=True)
po nazwie ramki danych:
df.reset_index(inplace=True)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-21 21:02:50
To tak naprawdę nie dotyczy twojej sprawy, ale może być pomocne dla innych (jak ja 5 minut temu), aby wiedzieć. Jeśli ktoś multindex ma takie same nazwy jak ta:
value
Trial Trial
1 0 13
1 3
2 4
2 0 NaN
1 12
3 0 34
df.reset_index(inplace=True)
nie powiedzie się, ponieważ utworzone kolumny nie mogą udostępniać nazw.
Więc musisz zmienić nazwę multindex z df.index = df.index.set_names(['Trial', 'measurement'])
aby uzyskać:
value
Trial measurement
1 0 13
1 1 3
1 2 4
2 0 NaN
2 1 12
3 0 34
I wtedy df.reset_index(inplace=True)
będzie działać jak urok.
Napotkałem ten problem po pogrupowaniu według roku i miesiąca na kolumnie datetime (nie Indeks) o nazwie live_date
, co oznaczało, że zarówno rok, jak i miesiąc zostały nazwane live_date
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-24 18:31:09