用Groupby总结一些行和一些列

时间:2019-06-26 18:45:28

标签: python pandas pandas-groupby

我有一个简化的大型数据集,如下所示:

  Name  c1  c2  c3  c4
0   a1   1   2   2   3
1   a2   2   1   1   2
2   a3   3   1   2   1
3   a4   2   3   3   4
4   b1   1   2   2   3
5   b2   3   1   2   1
6   b3   2   1   2   1
7   b4   1   3   4   1

我想总结一些列和一些行,以创建一个看起来像这样的聚合数据框:

    Name  c1+c2  c3+c4
0  a1+a2      6      8
1  a3+a4      9     10
2  b1+b2      7      8
3  b3+b4      7      8

我一直在尝试找出如何使用groupby和sum进行操作,但是我对此很陌生,无法解决。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

首先,对于要合并的行,您需要具有唯一的标识符,即

uq_grp Name  c1  c2  c3  c4
grp1   a1   1   2   2   3
grp1   a2   2   1   1   2
grp2   a3   3   1   2   1
grp2   a4   2   3   3   4
grp3   b1   1   2   2   3
grp3   b2   3   1   2   1

uq_grp 基本上定义了需要合并的行 现在执行以下操作:

df['c1+c2'] = df['c1']+df['c2']
df['c3+c4'] = df['c3']+df['c4']

uq_grp Name  c1  c2  c3  c4 c1+c2  c3+c4
grp1   a1    1   2   2   3    3     5
grp1   a2    2   1   1   2    3     3
grp2   a3    3   1   2   1    4     3
grp2   a4    2   3   3   4    5     7 
grp3   b1    1   2   2   3    3     5 
grp3   b2    3   1   2   1    4     3

现在根据uq_grp组合行

df.groupby(['uq_grp'],as_index=False)[['c1+c2','c3+c4']].sum()

结果

     Name  c1+c2  c3+c4
0  grp1      6      8
1  grp2      9     10
2  grp3      7      8
....
相关问题