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 ответа:
Объекты типа
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
, и т.д.