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

Python Pandas如何基于条件创建修正后的累积生产列

方案实现

你可以通过分组识别多轮生产序列的方式解决该问题,以下是两种常见业务场景的实现:

场景1:每轮生产的0值填充该轮次最终累积产量

适合多轮生产独立统计,轮次之间的产量不需要累加的场景:

import pandas as pd
data = {'CummulativeProdution':[100,200,300,0,0,0,100,200,300,0,0,0]      
       }
df = pd.DataFrame(data)

# 标记非0生产区间
mask = df['CummulativeProdution'] != 0
# 给每一轮生产分配唯一分组ID
df['group_id'] = mask.ne(mask.shift()).cumsum() // 2
# 每个分组用该轮最高累积值填充所有行
df['corrected Cummulative Column'] = df.groupby('group_id')['CummulativeProdution'].transform('max')

# 可选:删除中间辅助列
df = df.drop(columns='group_id')

运行后修正列结果为:[100,200,300,300,300,300,100,200,300,300,300,300]

场景2:全局连续累积产量

适合所有轮次产量累计统计,新轮次产量叠加到历史总累积的场景:

import pandas as pd
data = {'CummulativeProdution':[100,200,300,0,0,0,100,200,300,0,0,0]      
       }
df = pd.DataFrame(data)

# 计算单日产油量,处理新轮次产量跳变的情况
df['daily_prod'] = df['CummulativeProdution'].diff()
df.loc[(df['CummulativeProdution'] != 0) & (df['daily_prod'] < 0), 'daily_prod'] = df['CummulativeProdution']
# 全局累加得到连续累积值
df['corrected Cummulative Column'] = df['daily_prod'].cumsum()

# 可选:删除中间辅助列
df = df.drop(columns='daily_prod')

运行后修正列结果为:[100,200,300,300,300,300,400,500,600,600,600,600]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 11:06:03