Ошибка переполнения при использовании datetime с Pyarrow

При рандомизации даты и времени для проверки базы данных я сохранил их в паркет, используя pyarrow.parquets ' write_table(), а затем прочитать их обратно, используя read_table(),

При попытке преобразовать в типы данных Python с to_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, это ожидаемое поведение?

1 ответ

Решение

Основная проблема здесь заключается в том, что Pandas представляет дату-время с наносекундами с 1970 года. Время вокруг 2700 года - это просто ограничение того, что число nanoseconds-since-1970 превышает пространство, которое может быть представлено с int64,

В Arrow вы можете представить эти даты, используя более детальное представление, например milliseconds-since-1970 но при обращении в панд они всегда приводятся к nanoseconds-since-1970 и, таким образом, эта дата не может быть представлена ​​в пандах.

Другие вопросы по тегам