2012-07-16 24 views
7

Pythonのpandas DataFrameをRオブジェクトに変換するときに問題があります。将来、rpy2を使用してRで使用するために問題があります。python pandas DataFrameをRデータに変換するRデータフレーム

新しいパンダリリース0.8.0(数週間前にリリース)には、パンダのDataFramesをR DataFramesに変換する機能があります。問題は、私のpandas DataFrameの最初の列を変換することです。これは、Python datetimeオブジェクトで構成されています(時系列的に連続しています)。 Rデータフレームへの変換は、 "POSIXct"オブジェクトと呼ばれるR datetime-typeオブジェクトのベクトルではなく、日付と時刻のStrVectorを返します。

"as.POSIXct( 'yyyy-mm-dd hh:mm:ss')」コマンドを使用して、返された型の文字列をPOSIXctに変換するコマンドを知っています。残念ながら、私はPythonとrpy2を使ってStrVectorのこれらの文字列をすべてPOSIXctに変換する方法を理解できませんでした。日付は以下R.におけるTTRライブラリを使用するPOSIXct形式にする必要があり、関連するPythonコードです:

import pandas 
from pandas import * 
import pandas.rpy.common as com 
import rpy2.robjects as robjects 
r = robjects.r 
r.library('TTR')  #library contains the function ADX, to be used later 

dataframe = read_csv('file_name', parse_dates = [0], names = ['Date','Col1','Col2','Col3']  #command makes 1st column into datetime.datetime object 
r_dataframe = com.convert_to_r_dataframe(dataframe) 

ADX = r['ADX']   #creating a name for an R function in python 
adx = ADX(r_dataframe) #will not work because the dates in r_dataframe are in a StrVector 

さらに私はStrVectorは、各オブジェクトを変換することによって繰り返すことができることを信じていません。 StrVectorの定義のために、個別にPOSIXctオブジェクトを作成します。たぶん、StrVectorを一般的なものにキャストする方法がありますか?

この問題についての助力や洞察力があれば幸いです。私は初心者のプログラマーであり、数時間の間これを無駄にしています。

ありがとうございました!

答えて

4

あなたのADX呼び出しが失敗する理由は、High、Low、Closeの3つの列を持つxtsまたはmatrix-likeオブジェクトが必要なためです。あなたのオブジェクトには4列が含まれています。 r_dataframeADXに渡す前に日付の列を削除してください。その後、datetime列をADX出力に追加することができます。

それとも、あなたがDate列の値にあなたのR data.frameのrow.names属性を設定し、Date列を削除することができれば、あなたはas.xts(r.data.frame)を呼び出すことにより、XTSオブジェクトへのあなたのRのdata.frameを変換することができます。その後、それをADXに渡して、その結果をpandas DataFrameに戻すことができます。 GitHubの上

+0

非常にありがとうございます。これは大いに役立ちます。 – yayder9990

+0

うれしい質問に答えるためにパッケージの実際の作成者/管理者を得ることができました! – yayder9990

1

dalejungがrpy2との緊密なパンダ-XTSインターフェースを作成する際に、最近の仕事のかなりのビットを行っている、あなたは彼と連絡を取ったりPyDataメーリングリスト

-1

あなたが望むものを答えていないに参加するかもしれません。しかし、どのようにピペットライブラリを使用するのですか?

これは、PythonとRの間のちょうど "パイプ"です。したがって、変換に関する問題はほとんど発生しません。 https://pypi.python.org/pypi/piper