如何通过网状在 R 中使用 pandas 编写 csv?

how to write csv using pandas in R through 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"      

一个pandas数据帧对象有一个to_csv属性,但是你的in.file对象在读入时自动转换为Rdata.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()

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

所以只需将方法从 pandas 库调整到数据框本身:

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()