将python pandas DataFrame转换为R数据框以便与rpy2一起使用

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

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

我知道使用命令“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转换为通用的?

对此事的任何帮助/见解都非常感谢。 我是一个新手程序员,并且一直在努力工作几个小时,但无济于事。

谢谢!


你的ADX调用失败的原因是因为它需要一个包含3列的xt或类矩阵对象:高,低,关闭。 你的对象包含4列。 在将r_dataframe传递给ADX之前删除日期列,并且所有内容都应该可以正常工作。 然后,您可以将日期时间列添加回ADX输出。

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


GitHub上的dalejung最近在使用rpy2创建更紧密的pandas-xts界面方面做了很多工作,您可能会与他联系或加入PyData邮件列表


这不是你想要的答案。 但如何使用吹笛库?

这只是python和R之间的“管道”。因此它不会很少发生有关转换的问题。 https://pypi.python.org/pypi/piper

链接地址: http://www.djcxy.com/p/61537.html

上一篇: issue converting python pandas DataFrame to R dataframe for use with rpy2

下一篇: Android SDK manager not listing any platforms or packages to install