我有一个简化的大型数据集,如下所示:
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进行操作,但是我对此很陌生,无法解决。任何帮助将不胜感激!
答案 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
....