web-dev-qa-db-ja.com

Python Pandas to R dataframe

Python pandasデータフレームを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に転送したりするにはどうすればよいですか?

15
JonghoKim

最近のドキュメント https://rpy2.github.io/doc/v3.2.x/html/generated_rst/pandas.html には、pandasとの対話に関するセクションがあります。

それ以外の場合、タイプrpy2.robjects.vectors.DataFrameのオブジェクトのメソッドはto_csvfileではなくto_csvです。

https://rpy2.github.io/doc/v3.2.x/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)
10
lgautier

標準のテキストベースの形式(csv)が遅すぎるかかさばる場合は、 Apache Arrow に基づいて構築されたシリアル化形式である feather をお勧めします。これは、RStudio/ggplot2/etc(Hadley Wickham)およびpandas(Wes McKinney)の作成者によって、パフォーマンスとPythonとR(Python $ ===)の間の相互運用性のために明示的に開発されました。 ここ を参照してください。

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

いくつかのマイナーな調整(たとえば、カスタムDataFrameインデックスをフェザーに保存できないため、最初にdf.reset_index()を呼び出す必要があります)に加えて、これはcsvpickleなどの迅速で簡単なドロップイン置換です。 。

8
jayelm

Data.frameを取得したら、write.tableまたは後者のラッパーの1つ(たとえば、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')
4
agstudy