首页 > 解决方案 > pandas df.to_parquet 写入多个较小的文件

问题描述

是否可以使用 Pandas 的DataFrame.to_parquet功能将写入拆分为多个近似所需大小的文件?

我有一个非常大的 DataFrame (100M x 100),并且正在df.to_parquet('data.snappy', engine='pyarrow', compression='snappy')用于写入文件,但这会产生一个大约 4GB 的文件。相反,我希望将其拆分为许多〜100MB 的文件。

标签: pandassaveparquetpyarrowsnappy

解决方案


我最终使用了 Dask:

import dask.dataframe as da

ddf = da.from_pandas(df, chunksize=5000000)
save_dir = '/path/to/save/'
ddf.to_parquet(save_dir)

这会保存到 里面的多个 parquet 文件中save_dir,其中每个子 DataFrame 的行数是chunksize. 根据您的 dtypes 和列数,您可以调整它以使文件达到所需的大小。


推荐阅读