使用带有Pyarrow的datetimes时发生溢出错误

使用带有Pyarrow的datetimes时发生溢出错误,datetime,parquet,pyarrow,apache-arrow,Datetime,Parquet,Pyarrow,Apache Arrow,在随机分配日期时间以测试数据库时,我使用pyarrow.parquets将它们保存到parquet中,使用pyarrow.parquets'write\u table(),然后使用read\u table()将它们读回 在尝试使用将Python数据类型转换为_pydict()时,我收到以下错误: ---> 81 from_parquet = pq.read_table('parquet_vs_csv').to_pydict() 82 83 ''' pyarrow/ta

在随机分配日期时间以测试数据库时,我使用pyarrow.parquets将它们保存到parquet中,使用pyarrow.parquets'
write\u table()
,然后使用
read\u table()
将它们读回

在尝试使用
将Python数据类型转换为_pydict()
时,我收到以下错误:

---> 81 from_parquet = pq.read_table('parquet_vs_csv').to_pydict()
     82
     83 '''

pyarrow/table.pxi in pyarrow.lib.Table.to_pydict (/arrow/python/build/temp.linux-x86_64-2.7/lib.cxx:38283)()

pyarrow/table.pxi in pyarrow.lib.Column.to_pylist (/arrow/python/build/temp.linux-x86_64-2.7/lib.cxx:31782)()

pyarrow/table.pxi in pyarrow.lib.ChunkedArray.to_pylist (/arrow/python/build/temp.linux-x86_64-2.7/lib.cxx:30410)()

pyarrow/array.pxi in __iter__ (/arrow/python/build/temp.linux-x86_64-2.7/lib.cxx:25015)()

pyarrow/scalar.pxi in pyarrow.lib.TimestampValue.as_py (/arrow/python/build/temp.linux-x86_64-2.7/lib.cxx:21082)()

pyarrow/scalar.pxi in pyarrow.lib.lambda5 (/arrow/python/build/temp.linux-x86_64-2.7/lib.cxx:7234)()

pandas/_libs/tslib.pyx in pandas._libs.tslib.Timestamp.__new__ (pandas/_libs/tslib.c:10051)()

pandas/_libs/tslib.pyx in pandas._libs.tslib.convert_to_tsobject (pandas/_libs/tslib.c:27665)()

OverflowError: Python int too large to convert to C long
我到处玩,这发生在年份大于2700左右的日期时间(这是在工作中,这是一个更大的数字,忘记了确切的数字是更低的)


我是pyarrow的新手,这是预期行为吗?

这里的根本问题是,自1970年以来,熊猫代表的日期时间为纳秒。2700年前后的时间仅仅是一个限制,即自1970年以来,
纳秒的数量超过了可以用
int64
表示的空间


在Arrow中,您可以使用更精细的表示法来表示这些日期,如
毫秒-since-1970
,但在转换为Pandas时,它们总是被转换为
纳秒-since-1970
,因此这个日期不能用Pandas表示。

谢谢,26xx实际上是“限制”年。关于1918年之前返回20-21分钟的日期有什么线索吗?我还不知道是什么导致了这一点,但你应该关注Github上报道的以下问题:我打开了,看看我们是否可以在这里做些什么