将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