You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas保存分区parquet文件时能否自定义各分区的输出文件名?

pandas写入分区Parquet自定义文件名方案

原生pandas的to_parquet接口没有提供自定义分区内文件名的参数,默认生成的随机UUID文件名无法直接通过参数修改。你可以通过手动拆分分区、逐分区指定文件名写入的方式实现需求,具体实现如下:


实现思路

  • 先按分区字段对全量DataFrame做分组
  • 逐组构造符合分区规则的目录路径、自定义文件名
  • 每个分组单独写入对应路径,保证目录结构和原生分区格式完全兼容

完整代码示例

import pandas as pd
import os

# 构造测试数据
df = pd.DataFrame(data={'year':  [2020, 2020, 2021],
                        'month': [1,12,2], 
                        'day':   [1,31,28], 
                        'value': [1000,2000,3000]})

# 根输出目录
root_path = './output'

# 按分区字段分组遍历
for (year, month), part_df in df.groupby(['year', 'month']):
    # 构造分区目录,和原生to_parquet生成的目录规则完全一致
    part_dir = os.path.join(root_path, f'year={year}', f'month={month}')
    os.makedirs(part_dir, exist_ok=True)
    # 自定义文件名,月份自动补前导零
    file_name = f'{year}_{month:02d}.parquet'
    # 写入指定路径
    part_df.to_parquet(os.path.join(part_dir, file_name), index=False)

输出效果

运行后生成的文件路径和你要求的完全一致:

output/year=2020/month=1/2020_01.parquet
output/year=2020/month=12/2020_12.parquet
output/year=2021/month=2/2021_02.parquet

注意事项

  • 单个分区数据量较大需要拆分为多个文件时,可以在自定义文件名中加序号后缀,比如2020_01_001.parquet、2020_01_002.parquet
  • 生成的分区结构完全兼容pandas、pyspark等工具的分区读取逻辑,直接调用pd.read_parquet('./output')即可正常读取所有数据
  • 超大数据量场景下可以直接调用pyarrow的底层接口做定制,性能比逐分组写入更高

内容的提问来源于stack exchange,提问作者bigdataadd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:54:05