df.groupby()修改需要帮助

时间:2018-08-11 00:22:16

标签: python python-3.x pandas

这是我的桌子:

   A  B  C  E
0  1  1  5  4
1  1  1  1  1
2  3  3  8  2

现在,我想按A列和B列对所有行进行分组。应该对C列求和,对于E列,我想使用C值为最大值的值。

我进行了A和B分组并求和C的第一部分。我这样做是:

df = df.groupby(['A', 'B'])['C'].sum()

但是在这一点上,我不确定如何告诉E列应采用C为最大值的值。

最终结果应如下所示:

   A  B  C  E
0  1  1  6  4
1  3  3  8  2

有人可以帮助我完成上述工作吗? 谢谢!

1 个答案:

答案 0 :(得分:4)

groupby排序后,将aggC一起使用。

通常,如果您要对不同的列应用不同的功能,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的最大值对齐。