Мне нужно прочитать значения даты, допускающие значение NULL, в целочисленном формате ('ГГГГММДД') до pandas, а затем сохранить этот pandas фрейм данных в Parquet как формат Date32 [Day], чтобы классификатор Athena Glue Crawler распознал этот столбец как свидание. Приведенный ниже код не позволяет мне сохранить столбец в паркет из pandas:
import pandas as pd
dates = [None, "20200710", "20200711", "20200712"]
data_df = pd.DataFrame(dates, columns=['date'])
data_df['date'] = pd.to_datetime(data_df['date']).dt.date
data_df.to_parquet(r'my_path', engine='pyarrow')
Я получаю эту ошибку ниже:
Traceback (most recent call last):
File "", line 123, in convert_column
result = pa.array(col, type=type_, from_pandas=True, safe=safe)
File "pyarrow\array.pxi", line 265, in pyarrow.lib.array
File "pyarrow\array.pxi", line 80, in pyarrow.lib._ndarray_to_array
TypeError: an integer is required (got type datetime.date)
Если я перемещаю значение None
ближе к концу списка дат это будет работать без каких-либо проблем, и pyarrow выведет столбец даты как Date32[Day]
. Я предполагаю, что, поскольку тип столбца Pandas для dt.date
равен object
плюс первое значение столбца NaT
(не время), pyarrow не может вывести столбец как Date32[Day]
из Pandas dataframe или некоторое примерное значение, вместо этого он выводит столбец как Integer
. Каков хороший способ сохранить этот столбец фрейма данных в паркет как столбец Date32[Day]
без сортировки значений столбца? Спасибо.