问题描述
我正在尝试使用指南 here 将 Pandas 数据帧转换为 R 数据帧。我到目前为止的代码是:
import pandas as pd
import rpy2.robjects as ro
from rpy2.robjects import pandas2ri
from rpy2.robjects.conversion import localconverter
pd_df = pd.DataFrame({'int_values': [1,2,3],'str_values': ['abc','def','ghi']})
with localconverter(ro.default_converter + pandas2ri.converter):
r_from_pd_df = ro.conversion.py2rpy(pd_df)
但是,这给了我以下错误:
Traceback (most recent call last):
File <my_file_ref>,line 13,in <module>
r_from_pd_df = ro.conversion.py2rpy(pd_df)
AttributeError: module 'rpy2.robjects.conversion' has no attribute 'py2rpy'
我发现了 this 相关问题,其中 OP 指的是正在更改的函数名称,但没有解释更改是什么。我已经尝试查看该模块,但我还不够先进,无法理解它。
接受的答案是指检查我已经完成的版本,我肯定使用的是 rpy2 v3.3.3,这与我正在遵循的指南相同。
解决方法
您指出的 rpy2 文档部分是通过运行代码示例构建的。这意味着该示例确实适用于相应版本的 rpy2。
我不确定您是否在运行时使用该版本的 rpy2?例如,添加 print(rpy2.__version__)
以检查是否是这种情况。
值得一提的是,rpy2 3.3.x 系列的最新版本是 3.3.6,可能没有充分的理由继续使用 3.3.3。否则 rpy2 3.4.0 刚刚发布;如果使用 R 4.0 或更高版本,或者最新版本的 R 包 dplyr
或 ggplot2
及其 rpy2 包装器,我建议使用该版本。
[PS:我刚刚用 rpy2-3.4.0 试过你的例子,它运行没有错误]