Python Pandas to R dataframe


Я собираюсь преобразовать Python pandas dataframe в dataframe в R. Я нашел несколько библиотек для этой проблемы

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

Который является rpy2

Но я не смог найти методов для сохранения или переноса его в R.

Сначала я попробовал "to_csv"

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?

3 14

3 ответа:

Объекты типа rpy2.robjects.vectors.DataFrame имеют Метод to_csvfile, а не to_csv: http://rpy.sourceforge.net/rpy2/doc-2.4/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)

Как только вы получите свои данные.фрейм можно сохранить с помощью 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')

В настоящее время я бы рекомендовал feather, формат сериализации, построенный на Apache Arrow. Он был явно разработан создателями RStudio/ggplot2 / etc (Hadley Wickham) и pandas (Wes McKinney) для обеспечения производительности и совместимости между Python и R (см. здесь).

Вам нужен 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()), это быстрая и простая замена дляcsv, pickle, и т.д.