Панды: снижение мультииндекса до максимально доступного уровня - PullRequest
0 голосов
/ 04 октября 2018

У меня есть следующий тип фрейма данных, значения которого сгруппированы по 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

1 Ответ

0 голосов
/ 04 октября 2018

Добавление reset_index также unstack с Series

df.set_index(['categA','categB','categC']).value.unstack('categC').reset_index()
Out[875]: 
categC categA categB    C1    C2    C3
0          A1     B3  None     6     5
1          A2     B1     3  None  None
2          A2     B2  None     2  None
3          A3     B2  None  None     3
...