python - 如何将 R 数据帧导入 Pandas?

标签 python r import pandas dataframe

我断断续续地使用 R 作为 Python 的“后端”,因此偶尔需要将数据帧从 R 导入 Python;但我不知道如何将 R data.frame 导入为 Pandas DataFrame

例如,如果我在 R 中创建一个数据框

rdf = data.frame(a=c(2, 3, 5), b=c("aa", "bb", "cc"), c=c(TRUE, FALSE, TRUE))

然后使用 rmagic

将其拉入 Python
%Rpull -d rdf

我明白了

array([(2.0, 1, 1), (3.0, 2, 0), (5.0, 3, 1)], 
      dtype=[('a', '<f8'), ('b', '<i4'), ('c', '<i4')])

我不知道这是什么,肯定不是

pd.DataFrame({'a': [2, 3, 5], 'b': ['aa', 'bb', 'cc'], 'c': [True, False, True]})

这是我所期望的。

唯一接近于为我工作的是使用文件通过在 R 中写入来传输数据帧

write.csv(data.frame(a=c(2, 3, 5), b=c("aa", "bb", "cc"), c=c(TRUE, FALSE, TRUE)), file="TEST.csv")

然后用 Python 阅读

pd.read_csv("TEST.csv")

尽管这种方法会产生一个额外的列:“未命名:0”。

将 R 数据帧作为 Pandas 数据帧导入 Python 的习惯用法是什么?

最佳答案

第一个:array([(2.0, 1, 1), (3.0, 2, 0), (5.0, 3, 1)], dtype=[('a', '<f8'), ('b', '<i4'), ('c', '<i4')]) .那是一个 numpy结构化 array . http://docs.scipy.org/doc/numpy/user/basics.rec.html/ .您可以轻松地将其转换为 pandas使用 pd.DataFrame 测向:

In [65]:

from numpy import *
print pd.DataFrame(array([(2.0, 1, 1), (3.0, 2, 0), (5.0, 3, 1)], dtype=[('a', '<f8'), ('b', '<i4'), ('c', '<i4')]))
   a  b  c
0  2  1  1
1  3  2  0
2  5  3  1

b列被编码(好像 factor()R 中编辑),c列是从 boolean 转换而来的至 int . aint 转换而来至 float ( '<f8' ,其实我发现没想到)

第二,我认为pandas.rpy.common是从 R 获取数据的最便捷方式: http://pandas.pydata.org/pandas-docs/stable/r_interface.html (可能太简短了,所以我在这里再补充一个例子):

In [71]:

import pandas.rpy.common as com
DF=pd.DataFrame({'val':[1,1,1,2,2,3,3]})
r_DF = com.convert_to_r_dataframe(DF)
print pd.DataFrame(com.convert_robj(r_DF))
   val
0    1
1    1
2    1
3    2
4    2
5    3
6    3

最后,Unnamed: 0列是索引列。您可以通过提供 index_col=0 来避免它至 pd.read_csv()

关于python - 如何将 R 数据帧导入 Pandas?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22735224/

相关文章:

python魔杖错误 "wand.resource.DestroyedResourceError: <wand.image.Image: (closed)> is destroyed already"

r - 将 R 绘图 x 轴设置为在 y=0 处显示

mysql - 使用 MySQL 或 r,或两者都使用?

java - 如何使用 python 在 jar 文件中调用 python 脚本?

import - angular 2 种子,webstorm 2016.1 突然停止导入库

python - 从 Rust 函数返回字符串到 Python

python - 手动创建 Python Traceback

python - 查找列表中最常见的元素

r - 带有键值的R中的for循环

bash - 在 bash 中将变量作为本地变量