rpy2 在 python 中加载 R-dataframe 产生错误的时间戳

rpy2 loading R-dataframe in python produces wrong timestamps

我正在尝试使用 rpy2 将 R 数据帧加载到 python。

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"

读取此数据帧时如何保留原始正确的 UTC 时间?尝试 x = pd.to_datetime(robjects.r['times']) 也会在 python 数据帧中产生相同的错误时间戳。

做的时候

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

在文件 example.Rdata 中序列化的 R 对象最终被加载并绑定到 R 的 "global environment" 中的符号。这大概不会导致 Python Dataframe array(['times', 'all_data'], dtype='<U8').

Python代码

robjects.r['times']

也可以写成

robjects.globalenv['times']

它所做的是在 R 的全局环境中检索 R 符号 times 并通过 rpy2 转换传递它。

如果没有独立的可重现示例,很难确定到底发生了什么,但如果这似乎是 rpy2 的问题,请在问题跟踪器上打开一个。

编辑: 此处打开问题 - https://github.com/rpy2/rpy2/issues/634