Python Pandas到R datafram

2024-06-16 13:02:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我将在R中将Python pandas数据帧转换为数据帧。 我找到了几个图书馆来解决这个问题

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

那是rpy2

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

首先我试着“去创造”

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

但它给了我一个错误

"AttributeError: 'DataFrame' object has no attribute 'to_csv'  "

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

<class 'rpy2.robjects.vectors.DataFrame'>

如何将此类型对象保存到csv文件或传输到R?


Tags: csvto数据orghttpdocsdataframepandas
3条回答

最近的文档https://rpy2.github.io/doc/v3.2.x/html/generated_rst/pandas.html有一个关于与pandas交互的部分。

否则,rpy2.robjects.vectors.DataFrame类型的对象有一个方法to_csvfile,而不是to_csv

https://rpy2.github.io/doc/v3.2.x/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)

一旦拥有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')

如果标准的基于文本的格式(csv)太慢或太大,我建议使用feather,一种建立在Apache Arrow上的序列化格式。它是由RStudio/ggplot2/etc(Hadley Wickham)和pandas(Wes McKinney)的创建者显式开发的,用于Python和R之间的性能和互操作性(参见here)。

您需要pandas verson 0.20.0+,pip install feather-format,然后可以使用to_feather/read_feather操作作为to_csv/read_csv的直接替换:

df_R.to_feather('filename.feather')
df_R = pd.read_feather('filename.feather')

等价的R(使用包feather)是

df <- feather::read_feather('filename.feather')
feather::write_feather(df, 'filename.feather')

除了一些小的调整(例如,不能将自定义数据帧索引保存在feather中,因此需要首先调用df.reset_index()),这是一个快速而简单的替换csvpickle等的插件

相关问题 更多 >