python - 如何将保存为 RData 的数据框从 R 导入到 pandas?

标签 python r pandas dataframe rpy2

我正在尝试将保存为 RData 的数据框从 R 导入到 pandas 数据框。我该怎么做?我尝试使用 rpy2 失败,如下所示:

import pandas as pd
from rpy2.robjects import r
from rpy2.robjects import pandas2ri
pandas2ri.activate()

# I use iris for convenience but I could have done r.load('my_data.RData')
print(r.data('iris'))
print(r['iris'].head())
print(type(r.data('iris')))

print(pandas2ri.ri2py_dataframe(r.data('iris')))
print(pandas2ri.ri2py(r.data('iris')))
print(pd.DataFrame(r.data('iris')))

输出:

[1] "iris"

   Sepal.Length  Sepal.Width  Petal.Length  Petal.Width Species
1           5.1          3.5           1.4          0.2  setosa
2           4.9          3.0           1.4          0.2  setosa
3           4.7          3.2           1.3          0.2  setosa
4           4.6          3.1           1.5          0.2  setosa
5           5.0          3.6           1.4          0.2  setosa
<class 'rpy2.robjects.vectors.StrVector'>
   0  1  2  3
0  i  r  i  s
['iris']

我使用 pandas 0.20.1 + python 3.6 x64 + Windows 7。

最佳答案

数据帧的广义转换被证明是一项昂贵的操作,因为某些类型的列需要复制。本地转换规则可能会更好:

from rpy2.robjects import pandas2ri
from rpy2.robjects import default_converter
from rpy2.robjects.conversion import localconverter

print(r.data('iris'))
with localconverter(default_converter + pandas2ri.converter) as cv:
    pd_iris = r('iris')
# this is a pandas DataFrame
pd_iris

否则,以下是“正常工作”的(Linux,rpy2 的默认分支负责人):

import pandas as pd
from rpy2.robjects import r
from rpy2.robjects import pandas2ri
pandas2ri.activate()

pd_iris = r('iris')
pd_iris

如果它不适合您,则 Windows 上的 rpy2 可能存在问题(还有另一个问题 - Windows 不完全支持 rpy2)。

关于python - 如何将保存为 RData 的数据框从 R 导入到 pandas?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45223602/

相关文章:

python - Django 1.4 和 NoReverseMatch 在/admin/error

python - 如何将动态页面内容包含到模板中?

regex - 替换两个特殊字符之间的文本

python - 在 Pandas 中,如何在 Groupby 对象上使用 Group mean 应用自定义函数

没有 ascii 编码和 b 前缀的 Python3 : Is there a way to use telnetlib like in python2,?

python - 带有 cumprod 的 pandas groupby 的输出不显示 groupby 列

Windows 上的 RSelenium 问题与 startServer()

r - R Commander 中 S_Dbw 输出中的 "Inf"是什么意思?

python - 许多矩阵的元素中位数,python pandas

python - 使用 to_sql 将数据从 pandas dataframe 导入 SQL 数据库时 PC 挂起