如何通过网状结构在R中使用熊猫编写csv?

时间:2019-05-17 17:36:38

标签: python r pandas reticulate

我可以使用网状结构在rstudio中读取csv。但是我无法将其写回。

> library(reticulate)
> pandas <- import("pandas")
> in.file <- pandas$read_csv(file.path(getwd(),"in.csv"))
> nrow(in.file)
[1] 504
> class(in.file)
[1] "data.frame"
> in.file<-r_to_py(in.file)
> class(in.file)
[1] "pandas.core.frame.DataFrame"        "pandas.core.generic.NDFrame"        "pandas.core.base.PandasObject"      "pandas.core.base.StringMixin"      
[5] "pandas.core.accessor.DirNamesMixin" "pandas.core.base.SelectionMixin"    "python.builtin.object"      

2 个答案:

答案 0 :(得分:2)

这是R和Python对象模型不同的地方。在R中,像write.csv()这样的方法在对象上运行。但是在Python中,对象可以具有使用其父对象的可调用属性或属性,例如DataFrame.to_csv()

因此,只需将方法从熊猫库调整到数据框本身即可:

in.file$to_csv("/path/to/output.csv")

实际上,I/O methods的许多都是数据框属性:

in.file$to_excel("/path/to/output.xlsx", excel_writer)
in.file$to_sql(engine, "table_name")
in.file$to_hdf("hdf5_store", "table_name")

# OUTPUTS TO STRING
json_str = in.file$to_json()
html_str = in.file$to_html()

答案 1 :(得分:1)

pandas数据框对象具有to_csv属性,但是您的in.file对象在读入时已自动转换为R data.frame,因此它没有那些属性。为了使用Python方法将数据帧写回到CSV,您需要首先使用r_to_py()函数将其转换为Python对象:

infile_converted <- r_to_py(in.file)
infile_converted$to_csv(file.path(getwd(), 'out.csv'))

另一种选择就是使用本机R函数write.csv()