Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按两列分组并从第二列生成列_Python_Pandas - Fatal编程技术网

Python 按两列分组并从第二列生成列

Python 按两列分组并从第二列生成列,python,pandas,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

我有一个数据框,如:

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是索引,则以有效的方式?

在列中为
多索引
添加,以便进行必要的展平:

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

这是一个疯狂的快速回答!!