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

ARIMA预测代码报错:无法拼接numpy.int64类型对象,求解决方法

ARIMA预测代码报错修复方案

报错原因

training_data为pandas Series/DataFrame类型,直接调用append方法添加numpy.int64类型的测试值不符合要求——pandas的拼接方法仅支持同类型的Series/DataFrame对象。

修改方案

将单个测试值转换为与training_data同类型的对象后再拼接,以下是两种可行方式:

方式1:转换为Series/DataFrame后用concat拼接(推荐,避免append弃用警告)

如果training_data是Series:

import pandas as pd
from statsmodels.tsa.arima.model import ARIMA

model_predictions = []
for i in range(n_test_obser):
    model = ARIMA(training_data, order=(0,1,1))
    model_fit = model.fit()
    output = model_fit.forecast()
    yhat = output
    model_predictions.append(yhat)
    actual_test_value = testing_data[i]
    # 将单个值转为带连续索引的Series,再拼接
    new_data = pd.Series([actual_test_value], index=[training_data.index[-1] + 1])
    training_data = pd.concat([training_data, new_data])
    # 若为时间序列,需替换索引为对应时间,例如:
    # new_data = pd.Series([actual_test_value], index=[training_data.index[-1] + pd.Timedelta(days=1)])

如果training_data是DataFrame:

import pandas as pd
from statsmodels.tsa.arima.model import ARIMA

model_predictions = []
for i in range(n_test_obser):
    model = ARIMA(training_data, order=(0,1,1))
    model_fit = model.fit()
    output = model_fit.forecast()
    yhat = output
    model_predictions.append(yhat)
    actual_test_value = testing_data[i]
    # 将单个值转为单行DataFrame,保持列名一致
    new_data = pd.DataFrame([actual_test_value], columns=training_data.columns)
    training_data = pd.concat([training_data, new_data], ignore_index=True)

方式2:使用append(兼容旧版pandas)

若坚持使用append,同样需要转换类型:

# 以Series为例
training_data = training_data.append(pd.Series([actual_test_value], index=[training_data.index[-1]+1]))

额外提示

代码中的break语句会让循环仅执行一次,正式预测时需移除该语句,才能遍历所有测试样本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 19:38:27