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

如何用Python&Pandas将目录中JSON文件批量转为独立Parquet文件

JSON转独立Parquet文件批量处理方案

两种处理方式对比

  • 遍历DataFrame处理:路径已统一存储,方便后续做过滤、统计等二次操作;但多了一次路径存储的步骤,大文件量场景会占用少量额外内存,普通场景无影响。
  • 遍历目录时直接处理:无需额外存储路径,一步完成遍历与转换,效率更高;但如果后续需要复用路径列表,需要重新遍历目录。

批量转换实现(不合并文件)

方式1:遍历目录时直接处理(推荐)

这种方式无需额外存储路径列表,效率更高,适合大多数场景:

import os
import pandas as pd

path = 'trackingdata/'

for root, dirs, files in os.walk(path, topdown=False):
    for name in files:
        # 仅处理JSON格式文件,避免无关文件干扰
        if name.endswith('.json'):
            json_full_path = os.path.join(root, name)
            # 生成对应Parquet文件路径(替换后缀即可)
            parquet_full_path = os.path.splitext(json_full_path)[0] + '.parquet'
            
            # 读取JSON文件
            # 若为JSON Lines格式(每行一个JSON对象),需添加lines=True参数
            df = pd.read_json(json_full_path)
            # 写入Parquet,关闭索引写入以节省空间
            df.to_parquet(parquet_full_path, index=False)
            print(f"转换完成:{json_full_path} -> {parquet_full_path}")

方式2:遍历存储路径的DataFrame处理

如果已经有存储路径的DataFrame,可直接遍历转换:

import os
import pandas as pd

path = 'trackingdata/'

# 收集所有JSON文件路径到DataFrame
file_list = []
for root, dirs, files in os.walk(path, topdown=False):
    for name in files:
        if name.endswith('.json'):
            file_list.append(os.path.join(root, name))
df_paths = pd.DataFrame(file_list, columns=['json_path'])

# 遍历DataFrame完成转换
for _, row in df_paths.iterrows():
    json_path = row['json_path']
    parquet_path = os.path.splitext(json_path)[0] + '.parquet'
    
    df = pd.read_json(json_path)
    df.to_parquet(parquet_path, index=False)
    print(f"转换完成:{json_path} -> {parquet_path}")

关键注意事项

  • 必须添加JSON格式过滤:避免处理目录中的非JSON文件(如临时文件、隐藏文件)
  • 索引处理:index=False可避免将DataFrame的行索引写入Parquet,减少冗余数据
  • 特殊JSON格式支持:如果是JSON Lines格式(每行一个独立JSON对象),读取时需传入lines=True参数
  • 性能优化:大文件场景可指定engine='pyarrow'或engine='fastparquet'提升读写效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:20:23