将python数据帧转换为R数据帧以用于rpy2的问题

将python数据帧转换为R数据帧以用于rpy2的问题,python,r,dataframe,pandas,rpy2,Python,R,Dataframe,Pandas,Rpy2,我无法将Python中的pandasDataFrame转换为R对象,以便将来使用rpy2在R中使用 新的pandas版本0.8.0(几周前发布)具有将pandas数据帧转换为R数据帧的功能。问题在于转换my pandas DataFrame的第一列,它由python datetime对象(依次以时间序列的形式)组成。转换为R数据帧将返回日期和时间的StrVector,而不是R datetime类型对象的向量,我认为这些对象称为“POSIXct”对象 我知道使用命令“as.POSIXct('yyy

我无法将Python中的pandas
DataFrame
转换为R对象,以便将来使用rpy2在R中使用

新的pandas版本0.8.0(几周前发布)具有将pandas数据帧转换为R数据帧的功能。问题在于转换my pandas DataFrame的第一列,它由python datetime对象(依次以时间序列的形式)组成。转换为R数据帧将返回日期和时间的StrVector,而不是R datetime类型对象的向量,我认为这些对象称为“POSIXct”对象

我知道使用命令“as.POSIXct('yyyy-mm-dd hh:mm:ss')将返回的类型的字符串转换为POSIXct的命令。不幸的是,我无法找到使用python和rpy2将StrVector中的所有这些字符串转换为POSIXct的方法。日期必须采用POSIXct格式,才能与R中的TTR库一起使用。下面是相关的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转换为普通的StrVector

非常感谢对此事的任何帮助/见解。我是一个新手程序员,已经为此工作了几个小时,但都没有用


谢谢大家!

您的
ADX
调用失败的原因是它需要一个xts或类似矩阵的对象,它有3列:高、低、闭。您的对象包含4列。在将
r_dataframe
传递到
ADX
之前,请删除日期列,这样一切都会正常工作。然后可以将datetime列添加回
ADX
输出


或者,如果可以将R data.frame的
row.names
属性设置为
Date
列的值,然后删除
Date
列,则可以通过调用
as.xts(R.data.frame)
将R data.frame转换为xts对象。然后你可以将其传递到ADX,并将结果转换回pandas数据帧。

GitHub上的dalejung最近做了很多工作,用rpy2创建了一个更紧密的pandas xts接口,你可以与他联系,或者加入PyData邮件列表。

这不是你想要的答案。但是使用piper库怎么样

它只是python和R之间的“管道”,因此很少出现转换问题。

非常感谢你,约书亚。这很有帮助。很高兴我能找到包的实际作者/维护者来回答这个问题!