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

Python中如何对DataFrame按组别分组后每3行进行求和计算

解决Pandas按组别分组后每N行求和的问题

你当前的实现是直接对全局索引按每3行分组,没有先做location的组别拆分,也无法保留非数值列的正确取值,当不同location的行数不是3的整数倍时会出现跨location分组的错误。

以下是可直接运行的正确实现:

import pandas as pd

# 设定每N行求和
N = 3

# 步骤1:按location分组后,在每组内部生成每N行一个的辅助分组编号
df['group_idx'] = df.groupby('location').cumcount() // N

# 步骤2:按location、辅助分组编号+date分组(同个3行组的date取值一致),对数值列求和
result = df.groupby(['location', 'date', 'group_idx'], as_index=False).sum(numeric_only=True)

# 步骤3:删除辅助列得到最终结果
result = result.drop('group_idx', axis=1)

如果同3行组内的date取值不统一,可以改用下面的通用写法,自定义非数值列的取值规则:

result = df.groupby(['location', 'group_idx'], as_index=False).agg(
    date = ('date', 'first'), # 保留每组第一个date,也可按需修改为last等规则
    one = ('one', 'sum'),
    two = ('two', 'sum'),
    three = ('three', 'sum')
)

运行后得到的result和你给出的期望输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:45:04