我正在使用SARIMAX进行预测模型,我想在输出中添加列标题,但遇到了麻烦。我可以通过执行.to_csv来解决此问题,然后在添加标签之前将其作为新的数据帧读回,但我希望能够一步完成,而不是编写另一个文件。
mod = sm.tsa.statespace.SARIMAX(y,
order=(0, 1, 1),
seasonal_order=(0, 1, 1, 12),
enforce_stationarity=False,
enforce_invertibility=False)
results = mod.fit()
pred_uc = results.get_forecast(steps = 48)
pred_ci = pred_uc.conf_int()
forecast = pd.DataFrame(pred_uc.predicted_mean, columns = ['TIME', 'column_2'])
ValueError:传递的项目数错误1,展示位置意味着2
ValueError:传递的值的形状为(1,48),索引表示(2,48)
答案 0 :(得分:0)
pred_uc.predicted_mean
是与索引(例如日期索引)相关联的熊猫系列对象。
您可以将其转换为DataFrame,例如pred_uc.predicted_mean.to_frame()
,但仍然只有一列和一个索引。
如果出于某种原因您必须以您显示的形式保存它,则可以执行例如以下:
pred_uc.predicted_mean.to_frame('column_2').rename_axis('time').reset_index()
这将给出类似的内容:
time column_2
0 2009Q4 3.791093
1 2010Q1 1.864600
2 2010Q2 0.680030
3 2010Q3 2.299168
答案 1 :(得分:0)
经过一番阅读后,我最终找到了最适合的解决方案,因为这是每次迭代并为结果创建一个新列。
compiled_df[column_2] = forecast[0]
compiled_df.index.name = 'TIME'
谢谢您的帮助