熊猫通过两列分组,并从第二列生成列

时间:2018-12-07 06:48:45

标签: python pandas

我有一个熊猫数据框,如:

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 :(得分:3)

在列中为MultiIndex添加unstack,因此必须展平:

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