这是我的表:
A B C E
0 1 1 5 4
1 1 1 1 1
2 3 3 8 2
现在,我想按 A 列和 B 列对所有行进行分组.C 列应该相加,对于 E 列,我想使用值 C 为 max 的值。
我做了第一部分,将 A 和 B 分组并对 C 求和。我这样做了:
df = df.groupby(['A', 'B'])['C'].sum()
但是在这一点上,我不确定如何判断 E 列应该取 C 为 max 的值。
最终结果应如下所示:
A B C E
0 1 1 6 4
1 3 3 8 2
有人可以帮助我完成这件过去的作品吗? 谢谢!
按C
排序后将groupby
与agg
一起使用。
通常,如果要将不同的函数应用于不同的列,DataFrameGroupBy.agg
允许您传递一个字典,指定对每个列应用哪个操作:
df.sort_values('C').groupby(['A', 'B'], sort=False).agg({'C': 'sum', 'E': 'last'})
C E
A B
1 1 6 4
3 3 8 2
通过首先按列C
排序,而不是作为groupby
的一部分进行排序,我们可以选择每组E
的最后一个值,该值将与每个组的最大值C
一致。