我可以使用网状结构在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"
答案 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()
。