Я пытаюсь импортировать фрейм данных из 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
Если это не для вас, может возникнуть проблема с rpy2 в Windows (но еще одна - rpy2 не поддерживается полностью в Windows).
rpy2
чтобы открытьRdata
и сохранить каждый объект какcsv
?r.data() != .RData
. Первая - это функция, которая извлекает встроенные наборы данных R, такие как iris, mtcars и т. Д., А другая - двоичный тип файла.