¿Cómo escribir un DataFrame de Pandas en un archivo Parquet?
Estoy leyendo datos en fragmentos usando pandas.read_sql y agregándolos a un archivo parquet, pero obtengo errores.
Usando pyarrow.parquet:
import pyarrow as pa
import pyarrow.parquet as pq
for chunk in pd.read_sql_query(query, conn, chunksize=10000):
table_data = pa.Table.from_pandas(chunk) # convirtiendo el df a arrow
pq.write_table(table=table_data, where=file.parquet,
use_deprecated_int96_timestamps=True,
coerce_timestamps='ms', allow_truncated_timestamps=True)
Obteniendo el siguiente error:
File "pyarrow_parquet.pyx", line 1427, in pyarrow.parquet.ParquetWriter.__cinit__
File "pyarrow\error.pxi", line 120, in pyarrow.lib.check_status
pyarrow.lib.ArrowNotImplementedError: Tipo no manejado para la conversión de esquema de Arrow a Parquet: duration[ns]
Usando fastparquet:
from fastparquet import write
for chunk in pd.read_sql_query(query, conn, chunksize=10000):
with open(os.path.join(download_location, file_name + '.parquet'), mode='a+') as f:
write(filename=f.name, data=chunk, append=True)
Obteniendo el siguiente error:
raise ValueError("No se puede inferir el tipo de conversión de objeto: %s" % head)
ValueError: No se puede inferir el tipo de conversión de objeto: 0 2021-09-06
¿Hay alguna solución que convierta un dataframe de pandas a un archivo parquet (modo de agregado) sin problemas con las columnas de fecha y hora?
davy.ai
Sí, existe una solución que convierte un dataframe de pandas a un archivo Parquet (modo de apéndice) sin problemas en las columnas de fecha y hora. Puede utilizar la biblioteca pyarrow y especificar el tipo de dato de la columna de fecha y hora de manera explícita de la siguiente manera:
Al definir el esquema de manera explícita, puedes evitar cualquier problema con la columna de fecha y hora.