Как написать разделенный файл Parquet, используя Pandas - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь записать кадр данных Pandas в многораздельный файл:

df.to_parquet('output.parquet', engine='pyarrow', partition_cols = ['partone', 'partwo'])

TypeError: __cinit__() got an unexpected keyword argument 'partition_cols'

Из документации я ожидал, что partition_cols будет передан как kwargs в библиотеку pyarrow.Как записать разделенный файл на локальный диск с помощью панд?

Ответы [ 2 ]

0 голосов
/ 27 июля 2019

Вам необходимо обновить версию Pandas до версии 0.24 или выше.Функциональность partition_cols добавлена ​​начиная с этой версии.

0 голосов
/ 22 октября 2018

Pandas DataFrame.to_parquet - это тонкая оболочка для table = pa.Table.from_pandas(...) и pq.write_table(table, ...) (см. pandas.parquet.py#L120), а pq.write_table не поддерживает запись секционированных наборов данных.Вместо этого следует использовать pq.write_to_dataset.

import pandas as pd
import pyarrow as pa
import pyarrow.parquet as pq

df = pd.DataFrame(yourData)
table = pa.Table.from_pandas(df)

pq.write_to_dataset(
    table,
    root_path='output.parquet',
    partition_cols=['partone', 'parttwo'],
)

Для получения дополнительной информации см. Документацию pyarrow .

В общем, я всегда использовал бы API PyArrow непосредственно при чтении/ написание паркетных файлов, поскольку оболочка Pandas довольно ограничена в своих возможностях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...