проблема преобразования python pandas DataFrame в R dataframe для использования с rpy2
У меня возникли проблемы с преобразованием pandas DataFrame
в Python в объект R, для дальнейшего использования в R с использованием rpy2.
Я знаю команду для преобразования строки типа, возвращаемого в POSIXct, с помощью команды " as.POSIXct ('yyyy-mm-dd hh: mm: ss')". К сожалению, я не смог выяснить, как преобразовать все эти строки в StrVector в POSIXct, используя python и rpy2. Даты должны быть в формате POSIXct, который будет использоваться с библиотекой TTR в R. Ниже приведен соответствующий код 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 можно перебирать, чтобы преобразовать каждый объект в объект POSIXct индивидуально, из-за определения StrVector. Может быть, есть способ привести StrVector к общему?
Любая помощь/понимание этого вопроса высоко ценится. Я начинающий программист и работаю над этим уже пару часов безрезультатно.
Спасибо!
3 ответа:
Причина сбоя вызова
ADX
заключается в том, что он ожидает xts или матричный объект с 3 столбцами: High, Low, Close. Ваш объект содержит 4 столбца. Опустите столбец даты перед передачейr_dataframe
вADX
, и все должно работать. Затем можно добавить столбец datetime обратно в выводADX
.Или, если вы можете установить атрибут
row.names
ваших данных R.обрамление к значениям столбцаDate
и затем удаление столбцаDate
, Вы можете преобразовать ваши данные R.кадр к объекту xts по вызовas.xts(r.data.frame)
. Затем вы можете передать это вADX
и преобразовать результат обратно в фрейм данных pandas.
Dalejung на GitHub недавно проделал довольно большую работу по созданию более плотного интерфейса pandas-xts с rpy2, вы можете связаться с ним или присоединиться к списку рассылки PyData
Это не ответ на то, что вы хотите. Но как насчет использования библиотеки Пайпер?
Это просто "труба" между python и R. таким образом, не редко возникает проблема что-то о преобразовании. https://pypi.python.org/pypi/piper