如何将rpy2 ListVector(rpy2.robjects.vectors.ListVector)转换为python?

时间:2014-12-20 00:38:35

标签: python time-series rpy2

我正在使用rpy2从python运行auto.arima()模型。我的预测输出了一个rpy2.robjects.vectors.ListVector类型的对象。

input1:  type(forecast)
output: rpy2.robjects.vectors.ListVector

问题:如何将此预测以rpy2.robjects.vectors.ListVector的形式转换回python?请注意,我查看了其他帖子,但答案似乎对问题过于具体,而且无论如何都无法找出答案。

请注意,此ListVector具有以下名称:

input: print(forecast.names)
output:   [1] "method"    "model"     "level"     "mean"      "lower"     "upper"    
 [7] "x"         "xname"     "fitted"    "residuals"

2 个答案:

答案 0 :(得分:5)

可以使用“.rx”转换回python来选择感兴趣的矢量,然后使用numpy.array:

arima_mean = np.array(forecast.rx('mean'))

再到pandas,首先压扁numpy数组:

pd.DataFrame({'mean':arima_mean.flatten()} )

答案 1 :(得分:0)

如果您还希望预测数据框的上限为80%且下限为80%,则可以使用

pd.DataFrame({'forecast':np.array(forecast.rx('mean')).flatten(),
        'lo80':np.array(forecast.rx('lower')[0][:2]),
        'hi80':np.array(forecast.rx('upper')[0][:2])})