我使用R off and on作为Python的“后端”,因此有时需要将R中的数据帧导入Python;但是我不知道如何将R data.frame
作为PandasDataFrame
导入。在
例如,如果我在R中创建一个数据帧
rdf = data.frame(a=c(2, 3, 5), b=c("aa", "bb", "cc"), c=c(TRUE, FALSE, TRUE))
然后使用rmagic
和
我明白了
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]})
这是我所期待的。在
文件中的数据只是用来传输文件的
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")
尽管这种方法也会产生一个额外的列:“Unnamed:0”。在
将R数据帧作为Pandas数据帧导入Python的习惯用法是什么?在
这个怎么样(see pandas 0.13.1 documentation):
首先:
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/。您可以使用pd.DataFrame
轻松地将其转换为pandas
DF:b
列被编码(就像factor()
在R
)中被编码,c
列从boolean
转换为int
。a
从int
转换为float
('<f8'
,实际上我发现这是意外的)第二,我认为
^{pr2}$pandas.rpy.common
是从R
:http://pandas.pydata.org/pandas-docs/stable/r_interface.html获取数据的最方便的方法(它可能太短了,所以我在这里再加一个例子):最后,
Unnamed: 0
列是索引列。您可以通过向index_col=0
提供index_col=0
来避免它相关问题 更多 >
编程相关推荐