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

如何用Pandas实现以上一日Forecast加当日Appt的滚动预测计算?

解决Pandas中递推预测值的计算问题

核心思路

你的需求本质是递推计算:当日Forecast = 前一日Forecast + 当日Appt,其中第一天的Forecast为给定初始值。用Pandas的向量化操作可以高效实现,避免低效循环。

实现代码

方法一:向量化累积求和(推荐,效率高)

import pandas as pd

# 构造初始DataFrame(模拟你的数据)
df = pd.DataFrame({
    'Date': ['2022-12-01', '2022-12-02','2022-12-03','2022-12-04','2022-12-05'],
    'Appt': [12,10,5,4,13], 
    'Forecast': [37,0,0,0,0]
})
# 转换Date列为datetime类型(匹配你的原始数据格式)
df['Date'] = pd.to_datetime(df['Date'])

# 获取第一天的初始Forecast值
initial_forecast = df['Forecast'].iloc[0]
# 计算从第二天开始的Appt累积和,加上初始值得到后续所有Forecast
df['Forecast'].iloc[1:] = initial_forecast + df['Appt'].iloc[1:].cumsum()

print(df)

方法二:循环递推(适合小数据量,逻辑直观)

如果数据量不大,也可以用循环直接实现递推逻辑:

import pandas as pd

df = pd.DataFrame({
    'Date': ['2022-12-01', '2022-12-02','2022-12-03','2022-12-04','2022-12-05'],
    'Appt': [12,10,5,4,13], 
    'Forecast': [37,0,0,0,0]
})
df['Date'] = pd.to_datetime(df['Date'])

# 从第二行开始遍历递推
for i in range(1, len(df)):
    df.loc[i, 'Forecast'] = df.loc[i-1, 'Forecast'] + df.loc[i, 'Appt']

print(df)

结果验证

两种方法运行后都会得到你期望的结果:

Date  Appt  Forecast
0 2022-12-01    12        37
1 2022-12-02    10        47
2 2022-12-03     5        52
3 2022-12-04     4        56
4 2022-12-05    13        69

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:10:37