7

DataFramerpy2を使用してRで将来使用するために、PythonのパンダをRオブジェクトに変換するのに問題があります。

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

コマンド「as.POSIXct('yyyy-mm-ddhh: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

3 に答える 3

4

呼び出しが失敗する理由ADXは、High、Low、Closeの3つの列を持つxtsまたはマトリックスのようなオブジェクトを想定しているためです。オブジェクトには4つの列が含まれています。に渡す前に日付列を削除r_dataframeするADXと、すべてが機能するはずです。次に、日時列をADX出力に追加し直すことができます。

または、row.namesR data.frameの属性を列の値に設定してからDate列を削除Dateできる場合は、を呼び出してRdata.frameをxtsオブジェクトに変換できますas.xts(r.data.frame)。次に、それをに渡してADX、結果をpandasDataFrameに戻すことができます。

于 2012-07-16T20:34:51.053 に答える
1

GitHubのdalejungは最近、rpy2とのより緊密なpandas-xtsインターフェースを作成するためにかなりの作業を行いました。彼に連絡するか、PyDataメーリングリストに参加することができます。

于 2012-09-08T23:14:40.083 に答える
-1

それはあなたが望むものに答えません。しかし、パイパーライブラリを使用するのはどうですか?

これは、PythonとRの間の単なる「パイプ」です。したがって、変換に関して問題が発生することはめったにありません。 https://pypi.python.org/pypi/piper

于 2014-11-12T02:50:41.643 に答える