在Pandas中加载.rds文件

D1X*_*D1X 21 python python-3.x pandas

我已经下载了一个格式为.rds的文件,如何用Pandas加载它?它应该是一个R文件,但我无法找到有关如何加载它的任何信息.

mga*_*ini 23

您可以通过以下方式将rpy2接口用于Pandas:

import rpy2.robjects as robjects
from rpy2.robjects import pandas2ri
pandas2ri.activate()

readRDS = robjects.r['readRDS']
df = readRDS('my_file.rds')
df = pandas2ri.ri2py(df)
# do something with the dataframe
Run Code Online (Sandbox Code Playgroud)


Ott*_*rdo 14

如果您不想安装R(rpy2需要它),则有一个新的软件包“ pyreadr”可以非常轻松地读取Rds和RData文件。

它是C库librdata的包装,因此速度非常快。

您可以使用pip轻松安装它:

pip install pyreadr
Run Code Online (Sandbox Code Playgroud)

然后,您可以读取rds文件:

import pyreadr

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

# done! 
# result is a dictionary where keys are the name of objects and the values python
# objects. In the case of Rds there is only one object with None as key
df = result[None] # extract the pandas data frame 
Run Code Online (Sandbox Code Playgroud)

仓库在这里:https : //github.com/ofajardo/pyreadr

免责声明:我是此程序包的开发人员。

  • Sphafile 是具有嵌套对象的数据框。pyreadr 背后的 C 库 Librdata 目前不支持读取嵌套对象。此外,这些嵌套对象似乎是列表,而 librdata 目前无法读取列表。由于这些原因 pyreadr 无法读取形状文件或具有类似复杂结构的其他文件。 (4认同)
  • @OttoFajardo 当尝试读取 rds 文件时,我收到错误“LibrdataError:无效文件,或文件具有不受支持的功能”。我研究了这个问题,但找不到解决方案。您以前已经遇到过这个问题吗? (3认同)

小智 14

为了跟进@mgalardini 的回答,在较新版本的 rpy2(3.0.4 版)中,将 R 数据帧转换为 Pandas 数据帧的方法已更改:

>>> rpy2.__version__
'3.0.4'
>>> import rpy2.robjects as robjects
>>> from rpy2.robjects import pandas2ri
>>> readRDS = robjects.r['readRDS']
>>> df = readRDS('my_file.rds')
>>> df = pandas2ri.rpy2py_dataframe(df)
Run Code Online (Sandbox Code Playgroud)

  • pip 安装 tzlocal (2认同)