我正在尝试使用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的“全局环境”中的符号。大概不会导致Python数据框array(['times', 'all_data'], dtype='<U8')
。Python代码
robjects.r['times']
也可以写成
robjects.globalenv['times']
及其作用是在R的全局环境中检索R符号times
,并将其传递给rpy2转换。[没有独立的可复制示例很难确定到底发生了什么,但是如果rpy2似乎是一个问题,请在问题跟踪器上打开一个。
edit:问题在这里打开-https://github.com/rpy2/rpy2/issues/634