rpy2将.RData文件中的多个DataFrame加载到pandas

时间:2017-01-31 07:39:20

标签: python r dataframe rpy2

我在系统中有一个.RData文件,其中包含三个对象 - 所有R - DataFrame s。我想将它们作为pandas DataFrames加载到python中。我得到的问题是,对象不是通过rpy加载的,只是他们的名字:

from rpy2.robjects import r
from rpy2.robjects import pandas2ri
import pandas as pd
file="./normalization.RData"
rf = r.load(file)
rf

<StrVector - Python:0x7fdf1a28cb08 / R:0x4ce82c8>
['df1', 'df2', 'df3']

f1[2]

'annodf'
In [11]:

只加载了名称,或者我不了解如何从RData访问/转换DF。

有人有解决方案吗?

1 个答案:

答案 0 :(得分:2)

好的 - 我刚刚意识到对象并没有真正加载到rf变量中,而是加载到代表R环境的rpy2.rojbects.r中......这很棘手!

因此以下工作:

import pandas as pd
from rpy2.robjects import r
import rpy2.robjects.pandas2ri as pandas2ri


#load into the env
file="./normalization.RData"
rf=r['load'](file)
rf

<StrVector - Python:0x7fdf1a28cb08 / R:0x4ce82c8>
['df1', 'df2', 'df3']

#acces file in env and convert
df2=pandas2ri.ri2py_dataframe(r['df2'])
type(df2)

pandas.core.frame.DataFrame