这是我的 table :
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
有人可以帮我解决这个过去的问题吗? 谢谢!
最佳答案
在按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
的最大值对齐。
关于python - df.groupby() 需要修改帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51795410/