Я пытаюсь прочитать CSV-файл в Pandas, а затем записать его в Parquet. Проблема в том, что в CSV есть столбец даты со значением 3000-12-31, и, очевидно, у Pandas нет способа сохранить это значение как фактическую дату. Из-за этого PyArrow не может прочитать значение даты.
Пример файла и кода для воспроизведения:
test.csv
t
3000-12-31
import pandas as pd
import pyarrow as pa
df = pd.read_csv("test.csv", parse_dates=["t"])
schema = pa.schema([pa.field("t", pa.date64())])
table = pa.Table.from_pandas(df, schema=schema)
Это дает (несколько бесполезную ошибку)
TypeError: требуется целое число (получен тип str)
Как правильно это сделать?
pd.Timestamp.max
илиTimestamp('2262-04-11 23:47:16.854775807')
. Таким образом, даже если вы указываете его для анализа даты, он пытается и терпит неудачу, поэтому он просто сохраняет столбец как строку. Единственный реальный вариант - сохранить его какPeriod
,df['t'] = df['t].apply(pd.Period)
, но я не знаю, поддерживает ли pyarrow этот dtype. - person ALollz   schedule 02.11.2020Period
в качестве типа даты. Думаю, мне нужно какое-то обходное решение. - person Kris Harper   schedule 02.11.2020