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

如何对Pandas DataFrame按列分组求和并保留观测数量?

Pandas分组求和并统计行数实现方案

原始数据

import pandas as pd
df = pd.DataFrame({'id':[1, 1, 2, 2], 'comp': [-0.10,0.20,-0.10, 0.4], 'word': ['boy','girl','man', 'woman']})

需求说明

按id列分组,计算comp列的总和,同时新增n_obs列统计每组的行数。直接使用df.groupby('id').sum()会错误拼接word列的字符串,无法得到预期结果。

实现方案

方法一:使用agg()指定多列聚合规则

这是最简洁的方式,一次完成两种聚合操作:

result = df.groupby('id', as_index=False).agg(
    comp=('comp', 'sum'),
    n_obs=('id', 'count')
)
print(result)
  • as_index=False确保id作为普通列输出,而非索引
  • agg()中分别指定comp列求和、任意列(这里用id)统计行数

方法二:分步聚合后合并

先分别计算求和结果和行数,再通过merge()合并:

# 计算comp列的分组求和
sum_df = df.groupby('id', as_index=False)['comp'].sum()
# 统计每组行数并修改列名
count_df = df.groupby('id', as_index=False).size().rename(columns={'size': 'n_obs'})
# 合并两个结果
result = pd.merge(sum_df, count_df, on='id')
print(result)

输出结果

id  comp  n_obs
0   1   0.1      2
1   2   0.3      2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:06:26