Как написать CSV, используя панды в R через сетку? - PullRequest
2 голосов
/ 17 мая 2019

Я могу прочитать CSV в rstudio, используя сетку. Однако я не могу написать это обратно.

> 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 ]

2 голосов
/ 17 мая 2019

В этом отличие объектных моделей R и Python.В R методы типа write.csv() запускаются на объектах.Но в Python объекты могут иметь вызываемые свойства или атрибуты, которые используют его родительский объект, например DataFrame.to_csv().

Так что просто настройте метод из библиотеки pandas на сам фрейм данных:

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

На самом деле многие из методов ввода-вывода являются свойствами фрейма данных:

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 голос
/ 17 мая 2019

Объект pandas dataframe имеет атрибут to_csv, но ваш объект in.file был автоматически преобразован в R data.frame при чтении, поэтому он не имеет этих атрибутов.Чтобы записать фрейм данных обратно в CSV с использованием метода Python, вам необходимо сначала преобразовать его в объект Python с помощью функции r_to_py():

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

Другой вариант - просто использоватьсобственная функция R write.csv().

...