python - 将高维 R 数据集加载到 Pandas DataFrame

标签 python r pandas rpy2

一些 R datasets可以是loaded into a Pandas DataFrame or Panel很容易:

import pandas.rpy.common as com
infert = com.load_data('infert')
print(infert.head())

只要 R 数据集的维度 <= 3,这似乎就可以工作。更高维度的数据集会打印一条错误消息:

In [67]: com.load_data('Titanic')
Cannot handle dim=4

此错误消息源自 rpy/common.py _convert_array 函数。

当然,Pandas 不能直接将 4 维矩阵塞进 DataFrame 或 Panel 中是有道理的,但是是否有一些解决方法可以将 Titanic 之类的数据集加载到 DataFrame 中(也许使用分层索引)?

最佳答案

使用@joran 非常有用的建议,在安装了 reshape 包之后

% sudo R
R> install.packages('reshape')

我设法将 Titanic 数据集加载到 Pandas DataFrame 中:

import pandas as pd
import pandas.rpy.common as com
import rpy2.robjects as ro

r = ro.r
r('library(reshape)')
df = com.convert_robj(r('melt(Titanic)'))
print(df.head())

打印出来

  Class     Sex    Age Survived  value
1   1st    Male  Child       No      0
2   2nd    Male  Child       No      0
3   3rd    Male  Child       No     35
4  Crew    Male  Child       No      0
5   1st  Female  Child       No      0

关于python - 将高维 R 数据集加载到 Pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19039356/

相关文章:

python - pandas - 如何根据日期组织数据框并将新值分配给列

r - 通过 Shiny 的包 R 在浏览器中显示符号

r - 从 h2o 中的 csv 导入选定的列

python - np.logic_or 与reduce 返回不同的结果

python - Pandas groupby 忽略某些行值

pandas - 如何按组的总和对组进行排序?

python - 按项目获取列表列表中的唯一条目

python - 如何避免 Django View 中的重复代码?

python - Pandas DataFrame 选择具有 NaN 值的特定列

r - 是否可以使用基于模型的树构建随机森林,即 partykit 包中的 `mob()`