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

如何用Pandas计算可归零递增列的分段总和?

Pandas高效实现分段增量总和计算

核心思路

用Pandas的向量化操作生成分组标签,再通过分组聚合计算目标值,完全替代低效的for循环。

具体步骤

假设你的数据集已加载为df,目标列为Extruder1:

  1. 生成分组标签
    以Extruder1等于0为分割点,每次遇到0就开启一个新分组,确保连续的非零段(含前置的0分隔行)被分到同一组:

    df['group_id'] = (df['Extruder1'] == 0).cumsum()
    
  2. 计算相邻行的差值
    用diff()快速得到当前行与前一行的数值差:

    df['delta'] = df['Extruder1'].diff()
    
  3. 分组聚合计算分段总和
    对每个分组的差值求和,第一个分组的初始差值为NaN,用fillna(0)处理:

    segment_total = df.groupby('group_id')['delta'].sum().fillna(0)
    

针对你的示例数据验证

  • 第一段(group_id=0):id157-159的差值为1563-1560=3、1563-1563=0,总和为3,匹配你的需求。
  • 第二段(group_id=1):id160-163的差值为2-0=2、4-2=2、6-4=2,总和为6,完全符合你的描述。

简化写法(无需保留中间列)

用链式调用压缩代码,避免生成临时列:

segment_total = (
    df.assign(
        group_id=lambda x: (x['Extruder1'] == 0).cumsum(),
        delta=lambda x: x['Extruder1'].diff()
    )
    .groupby('group_id')['delta']
    .sum()
    .fillna(0)
)

这种方法基于Pandas原生向量化运算,处理大规模数据集时效率远高于for循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 20:35:04