簡體   English   中英

rpy2 將 .RData 文件中的多個 DataFrames 加載到 pandas

[英]rpy2 load multiple DataFrames from a .RData file into pandas

我在系統中有一個.RData文件,其中包含三個對象 - 所有 R- DataFrame 我想將它們作為 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。

有人有解決方案嗎?

好的 - 我剛剛意識到該對象並沒有真正加載到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

對於那些得到以下錯誤的人:

AttributeError: module 'rpy2.robjects.pandas2ri' has no attribute 'ri2py_dataframe'

改變這個:

df2 = pandas2ri.ri2py_dataframe(r['df2'])

對此:

df2 = rpy2.robjects.conversion.rpy2py(r['df2'])

使用的 R 版本:3.6.3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM