Buscamos en diferentes foros para así regalarte la solución para tu inquietud, si tienes alguna duda puedes dejar la pregunta y responderemos porque estamos para servirte.
Solución:
De acuerdo con este problema de Jira, en la versión 2.0.0 se implementó la lectura y escritura de datos de Parquet anidados con una combinación de niveles de anidamiento de estructuras y listas.
El siguiente ejemplo demuestra la funcionalidad implementada haciendo un viaje de ida y vuelta: marco de datos de pandas -> archivo de parquet -> marco de datos de pandas. La versión de PyArrow utilizada es 3.0.0.
El marco de datos pandas inicial tiene un archivo de tipo lista de dictados y una entrada:
field
0 ['a': 1, 'a': 2]
Código de ejemplo:
import pandas as pd
import pyarrow as pa
import pyarrow.parquet
df = pd.DataFrame('field': [['a': 1, 'a': 2]])
schema = pa.schema(
[pa.field('field', pa.list_(pa.struct([('a', pa.int64())])))])
table_write = pa.Table.from_pandas(df, schema=schema, preserve_index=False)
pyarrow.parquet.write_table(table_write, 'test.parquet')
table_read = pyarrow.parquet.read_table('test.parquet')
table_read.to_pandas()
El marco de datos de salida es el mismo que el marco de datos de entrada, como debería ser:
field
0 ['a': 1, 'a': 2]
Recuerda que puedes mostrar esta noticia si te valió la pena.