将python pandas DataFrame转换为R DataFrame以用于rpy2时出现问题

2024-05-15 16:59:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我很难将Python中的pandasDataFrame转换为R对象,以便将来在R中使用rpy2。在

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

我知道转换返回到POSIXct类型的字符串的命令,使用命令“作为POSIXct('yyyy-mm-dd hh:mm:ss')”。不幸的是,我还没有找到使用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?在

对此事的任何帮助/洞察都将不胜感激。我是一个新手程序员,已经为此工作了几个小时,现在没有任何效果。在

谢谢你!在


Tags: 数据对象字符串inimport类型dataframepandas
3条回答

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

它只是python和R之间的“管道”,因此很少会出现转换方面的问题。 https://pypi.python.org/pypi/piper

您的ADX调用失败的原因是它需要一个具有3列的xts或类似矩阵的对象:High、Low、Close。对象包含4列。在将r_dataframe传递给ADX之前删除日期列,一切都应该正常。然后可以将datetime列添加回ADX输出。在

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

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

相关问题 更多 >