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

3

我正在使用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个回答

7

可以使用“.rx”选择感兴趣的向量,然后使用numpy.array将其转换回Python:

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

然后转换到pandas,首先要展开numpy数组:

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

1
如果您还想要包含上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])})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接