У меня есть следующий тип фрейма данных, значения которого сгруппированы по 3 различным категориям A, B, C:
import pandas as pd
A = ['A1', 'A2', 'A3', 'A2', 'A1']
B = ['B3', 'B2', 'B2', 'B1', 'B3']
C = ['C2', 'C2', 'C3', 'C1', 'C3']
value = ['6','2','3','3','5']
df = pd.DataFrame({'categA': A,'categB': B, 'categC': C, 'value': value})
df
, который выглядит как:
categA categB categC value
0 A1 B3 C2 6
1 A2 B2 C2 2
2 A3 B2 C3 3
3 A2 B1 C1 3
4 A1 B3 C3 5
Теперь,когда я хочу разложить этот df по категории C, .unstack () возвращает несколько мультииндексированных фреймов данных со значением «value» на первом уровне и интересующими меня категориями C1, C2 и C3 на втором уровне:
df = df.set_index(['categA','categB','categC']).unstack('categC')
df
Вывод:
value
categC C1 C2 C3
categA categB
A1 B3 NaN 6 5
A2 B1 3 NaN NaN
B2 NaN 2 NaN
A3 B2 NaN NaN 3
Существует ли быстрый и простой способ избавиться от мультииндекса, уменьшив его до максимально возможного уровня?Вот что я хотел бы получить в качестве вывода:
categA categB C1 C2 C3
A1 B3 NaN 6 5
A2 B1 3 NaN NaN
B2 NaN 2 NaN
A3 B2 NaN NaN 3
Большое спасибо заранее!
Редактировать:
print(df.reset_index())
дает:
categA categB value
categC C1 C2 C3
0 A1 B3 NaN 6 5
1 A2 B1 3 NaN NaN
2 A2 B2 NaN 2 NaN
3 A3 B2 NaN NaN 3