簡體   English   中英

如何將R中保存為RData的數據幀導入到pandas中?

[英]How can I import a data frame from R saved as RData to pandas?

我正在嘗試將R中保存為RData的數據幀導入到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)。

暫無
暫無

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

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