Skip to main content
 首页 » 编程设计

python之如何使用 Pandas 编写分区的 Parquet 文件

2025年05月04日15三少

我正在尝试将 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 库。 pandas如何将分区后的文件写入本地磁盘?

请您参考如下方法:

首先确保你有一个相当新的 pandas 和 pyarrow 版本:

pyenv shell 3.8.2 
python -m venv venv 
source venv/bin/activate 
pip install pandas pyarrow 
pip freeze | grep pandas # pandas==1.2.3 
pip freeze | grep pyarrow # pyarrow==3.0.0 

然后您可以使用 partition_cols 生成分区的 parquet 文件:

import pandas as pd 
 
# example dataframe with 3 rows and columns year,month,day,value 
df = pd.DataFrame(data={'year':  [2020, 2020, 2021], 
                        'month': [1,12,2],  
                        'day':   [1,31,28],  
                        'value': [1000,2000,3000]}) 
 
df.to_parquet('./mydf', partition_cols=['year', 'month', 'day']) 

这会产生:

mydf/year=2020/month=1/day=1/6f0258e6c48a48dbb56cae0494adf659.parquet 
mydf/year=2020/month=12/day=31/cf8a45116d8441668c3a397b816cd5f3.parquet 
mydf/year=2021/month=2/day=28/7f9ba3f37cb9417a8689290d3f5f9e6e.parquet