yay*_*990 7 python r dataframe rpy2 pandas
我在将DataFramePython中的pandas转换为R对象时遇到问题,以便将来在R中使用rpy2.
新的pandas发布0.8.0(几周前发布)具有将pandas DataFrames转换为R DataFrames的功能.问题在于转换我的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
Run Code Online (Sandbox Code Playgroud)
此外,由于StrVector的定义,我不相信StrVector可以通过迭代将每个对象单独转换为POSIXct对象.也许有一种方法可以将StrVector转换为通用的?
非常感谢任何有关此事的帮助/见解.我是一名新手程序员,并且已经工作了几个小时,现在无济于事.
谢谢!
您的调用失败的原因ADX是它需要一个包含 3 列的 xts 或类似矩阵的对象:最高价、最低价、收盘价。您的对象包含 4 列。r_dataframe在传递到之前删除日期列ADX,一切都应该正常。然后,您可以将日期时间列添加回输出ADX。
或者,如果您可以将row.namesR data.frame 的属性设置为该Date列的值,然后删除该Date列,则可以通过调用 将 R data.frame 转换为 xts 对象as.xts(r.data.frame)。然后您可以将其传递给ADX并将结果转换回 pandas DataFrame。
| 归档时间: |
|
| 查看次数: |
2124 次 |
| 最近记录: |