python - df.groupby() 需要修改帮助

标签 python python-3.x pandas

这是我的 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 排序后,将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 的最大值对齐。

关于python - df.groupby() 需要修改帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51795410/

相关文章:

python - 使用 urllib2 将 solr curl updateJSON 语法转换为 python

python - python pandas 中的 R dcast 等价物

python - 两个或多个数据框的完全外部连接

pandas - 用于方差分析和回归的 Pandas 中的分类变量用法?

python - 如何限制 selenium python 中的屏幕截图高度?

python - 如何使用 cdist 或 tensorflow 加速最近点比较?

python - matplotlib 子图之间的箭头

html - 找不到 'password_change_done' 的 Django 反向

python - 如何限制python函数的参数必须是字符串或lambda表达式之类的函数

python-3.x - 为什么我收到 ValueError : too many file descriptors in select()?