Python Pandas到R dataframe

Jon*_*Kim 14 python r rpy2 pandas

我将把Python pandas数据帧转换为R中的数据帧.我发现了这个问题的几个库

http://pandas.pydata.org/pandas-docs/stable/r_interface.html

这是rpy2

但我找不到保存或转移到R的方法.

首先我试过"to_csv"

df_R = com.convert_to_r_dataframe(df_total)
df_R.to_csv(direc+"/qap/detail_summary_R/"+"distance_"+str(gp_num)+".csv",sep = ",")
Run Code Online (Sandbox Code Playgroud)

但它给了我一个错误

"AttributeError: 'DataFrame' object has no attribute 'to_csv'  "
Run Code Online (Sandbox Code Playgroud)

所以我试着看看它的数据类型

<class 'rpy2.robjects.vectors.DataFrame'>
Run Code Online (Sandbox Code Playgroud)

我怎么能将这种类型的对象保存到csv文件或转移到R?

lga*_*ier 10

类型的对象pandas有一个方法rpy2.robjects.vectors.DataFrame,而不是to_csvfile:http: //rpy.sourceforge.net/rpy2/doc-2.4/html/vector.html#rpy2.robjects.vectors.DataFrame.to_csvfile

如果想要在Python和R之间传递数据,则有比编写和读取CSV文件更有效的方法.尝试转换系统:

from rpy2.robjects import pandas2ri
pandas2ri.activate()

from rpy2.robjects.packages import importr

base = importr('base')
# call an R function on a Pandas DataFrame
base.summary(my_pandas_dataframe)
Run Code Online (Sandbox Code Playgroud)


ags*_*udy 5

拥有 data.frame 后,您可以使用write.table或后者的包装器之一保存它,例如writee.csv

在 rpy2 中:

import rpy2.robjects as robjects
## get a reference to the R function 
write_csv = robjects.r('write.csv')
## save 
write_csv(df_R,'filename.csv')
Run Code Online (Sandbox Code Playgroud)


jay*_*elm 5

如果标准的基于文本的格式(csv)太慢或太笨重,我建议使用基于Apache Arrow的序列化格式feather.它由RStudio/ggplot2/etc(Hadley Wickham)和pandas(Wes McKinney)的创建者明确开发,用于Python和R之间的性能和互操作性(参见此处).

你需要pandas 0.20.0+ pip install feather-format,然后你可以使用to_feather/ read_featheroperations作为to_csv/的替代品read_csv:

df_R.to_feather('filename.feather')
df_R = pd.read_feather('filename.feather')
Run Code Online (Sandbox Code Playgroud)

R等同物(使用包feather)是

df <- feather::read_feather('filename.feather')
feather::write_feather(df, 'filename.feather')
Run Code Online (Sandbox Code Playgroud)

除了一些小的调整(例如,你不能保存自定义数据帧指标的羽毛,所以你需要调用df.reset_index()第一),这是一个快速和容易下降的替代产品csv,pickle等等.