You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Pandas中使用groupby与agg时,能否同表达式返回count除以sum?

Pandas groupby+agg中直接计算count/sum的方法

当然可以在同一个groupby+agg表达式里返回count除以sum的结果,下面是几种实用的实现方式:

方法一:同时保留count、sum和计算结果

通过字典传入agg参数,自定义每个聚合操作的列名,用lambda函数直接计算分组内的count/sum:

import pandas as pd

data=pd.DataFrame({'id':[1,1,1,2,2,3,3,3,3,4, 4],
             'val':[10,11,10,13,12,15,12,9, 8, 14, 2]})

result = data.groupby('id')['val'].agg(
    计数='count',
    求和='sum',
    计数除以求和=lambda x: x.count() / x.sum()
)

print(result)

执行后会得到包含原聚合列和计算结果列的DataFrame,结果如下:

计数  求和  计数除以求和
id
1    3  31  0.096774
2    2  25  0.080000
3    4  44  0.090909
4    2  16  0.125000

方法二:仅返回count/sum的结果

如果不需要保留count和sum列,可以直接用agg返回计算结果,之后按需重命名列:

result = data.groupby('id')['val'].agg(lambda x: x.count() / x.sum())
# 重置索引并重命名列
result = result.rename('计数除以求和').reset_index()

注意事项

如果分组内的sum为0,会触发除以0的错误,实际使用时可以添加判断逻辑避免异常,比如:

lambda x: x.count()/x.sum() if x.sum() != 0 else 0

内容的提问来源于stack exchange,提问作者Henri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 18:05:25