我有一个像这样的熊猫数据框:
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是索引?
最佳答案
在列中为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