如何用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
相关产品推荐
相关产品推荐

