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

如何将AutoReg预测生成的Pandas Series整数索引转为DatetimeIndex?

解决AutoReg预测结果索引为整数而非DatetimeIndex的问题

核心原因

直接调用model_h.model.predict()时,未拟合的模型实例不会自动关联训练数据的DatetimeIndex,因此返回的预测结果默认使用整数索引。之前重索引失败,大概率是因为生成的时间序列与预测结果长度不匹配,或是时间范围、频率设置错误导致无重叠索引。

两种解决思路

方法一:直接使用拟合后模型的predict()方法

拟合完成的模型实例(model_h)已保留训练数据的时间索引信息,直接调用它的predict()方法会自动返回带DatetimeIndex的预测结果:

from statsmodels.tsa.ar_model import AutoReg

model_h = AutoReg(train, lags=lag, missing='drop').fit()
# 直接用拟合后的模型调用predict,无需手动传递参数
predictions = model_h.predict(start='2023-02-13 00:00:00', end='2023-02-13 12:00:00')

这是最简便的处理方式,statsmodels会自动完成时间索引的映射。

方法二:手动为预测结果匹配DatetimeIndex

如果一定要使用model_h.model.predict(),需确保预测结果长度与目标时间序列一致,再手动绑定索引:

  1. 生成与训练数据频率一致的目标时间范围:
import pandas as pd
# 复用训练数据的频率,避免出现长度不匹配问题
pred_dates = pd.date_range(start='2023-02-13 00:00:00', end='2023-02-13 12:00:00', freq=train.index.freq)
  1. 调用model_h.model.predict()时,用整数指定预测的起始和结束位置(从训练数据末尾开始计数),再绑定时间索引:
# len(train)对应训练数据的最后一个位置,往后取len(pred_dates)个预测点
pred_values = model_h.model.predict(model_h.params, start=len(train), end=len(train)+len(pred_dates)-1)
predictions = pd.Series(pred_values, index=pred_dates)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:05:23