这是我的桌子:
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
有人可以帮助我完成上述工作吗? 谢谢!
答案 0 :(得分:4)
按groupby
排序后,将agg
与C
一起使用。
通常,如果您要对不同的列应用不同的功能,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
的最大值对齐。