Панды группируют по два столбца и генерируют столбцы из второго - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть пандасный фрейм данных:

index col1   col2   col3   col4   col5
0     a      c      1      2      f 
1     a      c      1      2      f
2     a      d      1      2      f
3     b      d      1      2      g
4     b      e      1      2      g
5     b      e      1      2      g

, если я сгруппирую по двум столбцам, например:

df.groupby(['col1', 'col2']).agg({'col3':'sum','col4':'sum'})

Я получу:

           col3  col4
col1 col2            
a    c        2     4
     d        1     2
b    d        1     2
     e        2     4

Можно ли преобразовать это в:

col1 c_col3 d_col3 c_col4 d_col4 e_col3 e_col4
a    2      1      4      2      Nan    Nan
b    Nan    1      Nan    2      2      4 

эффективным способом, где col1 - индекс?

1 Ответ

0 голосов
/ 07 декабря 2018

Добавить unstack для MultiIndex в столбцах, поэтому необходимо выравнивание:

df1 = df.groupby(['col1', 'col2']).agg({'col3':'sum','col4':'sum'}).unstack()
#python 3.6+
df1.columns = [f'{j}_{i}' for i, j in df1.columns]
#python bellow
#df1.columns = ['{}_{}'.format(j, i) for i, j in df1.columns]
print (df1)
      c_col3  d_col3  e_col3  c_col4  d_col4  e_col4
col1                                                
a        2.0     1.0     NaN     4.0     2.0     NaN
b        NaN     1.0     2.0     NaN     2.0     4.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...