需要 df.groupby() 修改帮助



这是我的表:

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排序后将groupbyagg一起使用。

通常,如果要将不同的函数应用于不同的列,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一致。

最新更新