rpy2 загрузка R-dataframe в python дает неправильные метки времени - PullRequest
1 голос
/ 30 января 2020

Я пытаюсь загрузить R-dataframe в python, используя rpy2.

import rpy2.robjects as robjects

robjects.r['load']("~/example.Rdata")

Создает python кадр данных с:

array(['times', 'all_data'], dtype='<U8')

Однако значения времени смещены:

robjects.r['times'] производит:

DatetimeIndex(['2014-12-31 17:00:00+00:00', '2014-12-31 17:30:00+00:00','2014-12-31 18:00:00+00:00', '2014-12-31 18:30:00+00:00', '2014-12-31 19:00:00+00:00', '2014-12-31 19:30:00+00:00', ...dtype='datetime64[ns, UTC]']

когда это должно дать (ниже непосредственно от R):

   "2015-01-01 00:00:00 UTC" "2015-01-01 00:30:00 UTC" "2015-01-01 01:00:00 UTC"
   "2015-01-01 01:30:00 UTC" "2015-01-01 02:00:00 UTC" "2015-01-01 02:30:00 UTC"

Как сохранить исходное правильное время UT C при чтении в этом кадре данных? Попытка x = pd.to_datetime(robjects.r['times']) также приводит к появлению тех же неправильных временных отметок в кадре данных python.

1 Ответ

0 голосов
/ 02 февраля 2020

При выполнении

robjects.r['load']("~/example.Rdata")

объекты R, сериализованные в файле example.Rdata, в конечном итоге загружаются и связываются с символами в "глобальной среде" R. Это, по-видимому, не приводит к Python кадру данных array(['times', 'all_data'], dtype='<U8').

Код Python

robjects.r['times']

также может быть записан как

robjects.globalenv['times']

и он извлекает символ R times в глобальной среде R и передает его через преобразование rpy2.

Трудно установить, что именно происходит, без отдельного воспроизводимого примера, но если это кажется чтобы быть проблемой с rpy2, откройте ее на трекере.

edit: Проблема открыта здесь - https://github.com/rpy2/rpy2/issues/634

...