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

在R语言dplyr中按id分组实现重置式cumsum的方法

解决按ID分组计算Payment累积和的问题

我来帮你搞定这个分组累积和的问题~你遇到的核心问题就是没有先按ID分组就直接计算累积和,导致累加过程跨ID持续进行,没有重置。

正确的实现方法

只需要先通过groupby('id')把数据按ID拆分成独立的组,再对每个组内的payment列计算累积和就可以了,这样每个ID的累积和都会从自身的第一个值开始重新计算。

下面是完整的代码示例:

import pandas as pd

# 模拟你的数据框
df = pd.DataFrame({
    'id': [1, 1, 1, 2, 2],
    'payment': [100, 150, 50, 75, 125],
    'month': ['01', '02', '03', '07', '08'],
    'year': [2015, 2015, 2015, 2016, 2016]
})

# 新增分组累积和列
df['cumultative_sum'] = df.groupby('id')['payment'].cumsum()

# 查看结果
print(df)

运行这段代码后,你就能得到期望的结果:

idpaymentmonthyearcumultative_sum
1100012015100
1150022015250
150032015300
27507201675
2125082016200

为什么之前的代码不对?

如果你的原始代码是直接对payment列计算全局累积和:

df['cumultative_sum'] = df['payment'].cumsum()

那结果就会是100, 250, 300, 375, 500,因为没有分组,累加会覆盖所有ID,自然不会重置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:12:30