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

如何对Pandas Series按id递增执行布尔逻辑下的累加求和?

Pandas Series 按前置id累加求和方案

你的需求是依次计算从id=0开始,包含所有前置id的len值累加和——比如id=0的和、id=0+1的和、id=0+1+2的和……直到最大的id。用Pandas内置方法就能直接实现,分两种场景处理:

场景1:只计算现有id的累积和(忽略缺失id)

你的Series索引是id,但存在跳号(比如23之后是25,无24),先确保索引按从小到大排序(原数据已升序的话可跳过这步),再用cumsum()计算累积和:

# 假设你的Series变量名为delta_series
# 按id(索引)排序,保证顺序正确
sorted_delta = delta_series.sort_index()
# 计算累积和
cumulative_sum = sorted_delta.cumsum()

得到的cumulative_sum就是目标结果:每个id对应的数值,就是从id=0到当前id的所有len值之和。比如:

  • id=0的累积和为122
  • id=1的累积和为122+88=210
  • id=2的累积和为210+86=296
  • ...
  • id=25的累积和为前面所有id(0到23)的len值之和加92

场景2:补全缺失id,计算连续id的累积和

如果需要把缺失的id(如24、26等)也纳入,且这些id的累积和等于前一个存在id的结果,可以先补全索引再计算:

# 生成从0到最大id的连续索引范围
full_id_range = pd.RangeIndex(start=0, end=delta_series.index.max() + 1)
# 重新索引,缺失id对应的len值填充为0
full_delta = delta_series.reindex(full_id_range, fill_value=0)
# 计算累积和
cumulative_sum_full = full_delta.cumsum()

这样id=24的累积和就和id=23完全一致,因为缺失id的len值为0,累加后数值不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:53:28