首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将.rda转换为熊猫数据

将.rda转换为熊猫数据
EN

Stack Overflow用户
提问于 2017-12-15 13:48:00
回答 3查看 14K关注 0票数 12

我有一些.rda文件需要用Python来访问。我的代码如下所示:

代码语言:javascript
复制
import rpy2.robjects as robjects
from rpy2.robjects import r, pandas2ri

pandas2ri.activate()
df = robjects.r.load("datafile.rda")
df2 = pandas2ri.ri2py_dataframe(df)

在那里df2是一只熊猫。但是,它只包含.rda文件的头!我来回搜寻过。所提出的解决办法似乎都没有效果。

有没有人知道如何有效地将.rda数据转换成熊猫数据?

EN

回答 3

Stack Overflow用户

发布于 2020-05-09 15:42:35

谢谢你提出的有用问题。我尝试了上面提出的两种方法来解决我的问题。对于feather,我面临着这样的问题:

代码语言:javascript
复制
pyarrow.lib.ArrowInvalid: Not a Feather V1 or Arrow IPC file

对于rpy2,正如@Orange所提到的:"pandas2ri.ri2py_dataframe似乎不再存在于rpy2版本3.0.3中“或更高版本。

我寻找另一个解决办法,发现pyreadr对我有用,也许对那些和我一样面临问题的人也有用:https://github.com/ofajardo/pyreadr

使用https://gist.github.com/LeiG/8094753a6cc7907c716f#gistcomment-2795790

代码语言:javascript
复制
pip install pyreadr
代码语言:javascript
复制
import pyreadr

result = pyreadr.read_r('/path/to/file.RData') # also works for Rds, rda

# done! let's see what we got
# result is a dictionary where keys are the name of objects and the values python
# objects
print(result.keys()) # let's check what objects we got
df1 = result["df1"] # extract the pandas data frame for object df1
票数 9
EN

Stack Overflow用户

发布于 2017-12-18 17:11:50

您可以尝试使用作为语言不可知论的数据R开发的新羽毛库,以便在R或Python中使用。

代码语言:javascript
复制
# Install feather
devtools::install_github("wesm/feather/R")

library(feather)
path <- "your_file_path"
write_feather(datafile, path)

然后安装在python中。

代码语言:javascript
复制
$ pip install feather-format

并加载您的数据文件。

代码语言:javascript
复制
import feather
path = 'your_file_path'
datafile = feather.read_dataframe(path)
票数 5
EN

Stack Overflow用户

发布于 2017-12-18 16:34:29

如前所述,考虑将.rda文件转换为单独的.rds对象,使用R的mgeteapply来构建数据字典。

RPy2

代码语言:javascript
复制
import os
import pandas as pd

import rpy2.robjects as robjects
from rpy2.robjects import pandas2ri    
from rpy2.robjects.packages import importr

pandas2ri.activate()

base = importr('base')
base.load("datafile.rda")    
rdf_List = base.mget(base.ls())

# ITERATE THROUGH LIST OF R DFs 
pydf_dict = {}

for i,f in enumerate(base.names(rdf_List)):
    pydf_dict[f] = pandas2ri.ri2py_dataframe(rdf_List[i])

for k,v in pydf_dict.items():
    print(v.head())
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47833692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档