将Pickle数据(python)读入R后,数字会发生变化

将Pickle数据(python)读入R后,数字会发生变化,python,r,pickle,reticulate,Python,R,Pickle,Reticulate,我有一个很大的数据集,其中unix纪元日期嵌入在列表/目录中,当前存储为pickle文件。我尝试使用网状包vis py_load_object()函数将pickle文件导入R。除了unix纪元日期(以毫秒为单位)之外,其他一切似乎都很好 我得到了非常奇怪的整数转换。例如,纪元日期694137600000在R中被解读为-1647101952。我想知道是否有解释和解决方法 谢谢 没有最低限度的帮助是非常困难的,但这里有一些想法: 您可以取消pickle并将文件转换为pandas数据帧 你的Pyth

我有一个很大的数据集,其中unix纪元日期嵌入在列表/目录中,当前存储为pickle文件。我尝试使用网状包vis py_load_object()函数将pickle文件导入R。除了unix纪元日期(以毫秒为单位)之外,其他一切似乎都很好

我得到了非常奇怪的整数转换。例如,纪元日期694137600000在R中被解读为-1647101952。我想知道是否有解释和解决方法


谢谢

没有最低限度的帮助是非常困难的,但这里有一些想法:

  • 您可以取消pickle并将文件转换为
    pandas
    数据帧 你的Python脚本。
    source\u python
    函数来自
    networkite
    将其作为R数据帧导入。请参阅文档 有关类型转换的其他信息:
  • 总是可以取消对文件的pickle并将其导出为公共文件 使用Python设置格式,例如
    csv
    ,然后将其导入R 通过这种方式,您可以绕过网状结构,而网状结构并不总是 有效的选择

还请注意,在处理R中的13位数字时,您可能需要一些帮助。您可能会对软件包
bit64
感兴趣

问题在于,Networkite将这些值视为32位整数-您可以看到下面python代码片段的问题:

In [1]: v = 694137600000

In [2]: v.bit_length()
Out[2]: 40

In [3]: import ctypes

In [4]: ctypes.c_int(v)
Out[4]: c_long(-1647101952)

In [5]: _.value
Out[5]: -1647101952

In [6]: ctypes.c_int64(v)
Out[6]: c_longlong(694137600000)

In [7]: ctypes.c_int32(v)
Out[7]: c_long(-1647101952)

最简单的解决方法之一是,在python中,取消对文件的pickle并另存为.csv文件,但您应该发现,如果将pickle数据转换为pandas数据帧,然后从R访问它,它将转换为R数据帧-除非日期/时间是第一列(请参阅了解原因)。

可能溢出了最大安全整数?