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

使用Pandas将JSON文件导出为CSV耗时过长是否正常?文件过大是否为诱因?

解决Pandas导出大JSON到CSV耗时过长的问题

嘿,你遇到的这个问题大概率是因为合并后的getaround_final.json体积太大导致的——毕竟你循环加载了多个JSON文件并把所有数据合并到一个列表里,最终生成的JSON可能包含了海量数据,直接用pd.read_json一次性加载再转CSV,会因为内存占用过高、IO效率低拖慢整个流程。下面给你几个针对性的优化方案:

1. 跳过中间大JSON,直接逐块写入CSV

你现在的流程是先合并成大JSON再转CSV,这一步完全可以省略。直接在加载每个小JSON文件后,就把数据追加到CSV里,既节省存储大JSON的空间,也减少了一次IO操作,内存压力小很多。

修改后的代码示例:

import json
import pandas as pd
from datetime import datetime, timedelta

search_date = datetime(2019, 8, 4)
nextSequence = timedelta(days=9)
path = 'C:/Users/coppe/dox/Drivy/'
output_csv = path + 'getaround_final.csv'

# 标记是否是第一次写入(用来生成表头)
first_write = True

while search_date <= datetime(2019, 12, 17):
    if search_date == datetime(2019, 12, 8):
        search_date += nextSequence
        continue
    file = f"{datetime.date(search_date)}/{datetime.date(search_date)}_final.json"
    with open(path + file) as json_file:
        cars = json.load(json_file)
    # 将当前JSON数据转为DataFrame
    df = pd.DataFrame(cars)
    # 追加到CSV,第一次写入表头,后续跳过表头
    df.to_csv(output_csv, index=False, mode='a', header=first_write)
    first_write = False
    search_date += nextSequence

2. 若需保留大JSON,用分块读取优化

如果你确实需要保留那个大JSON文件,可以用Pandas的分块读取功能,把大文件拆成小块处理,避免一次性加载全部数据到内存:

chunk_size = 10000  # 可根据你的内存情况调整大小
reader = pd.read_json(path + 'getaround_final.json', chunksize=chunk_size)

with open(path + 'getaround_final.csv', 'w') as csv_file:
    first_chunk = True
    for chunk in reader:
        chunk.to_csv(csv_file, index=False, header=first_chunk)
        first_chunk = False

3. 扁平化复杂的JSON结构

如果你的JSON数据有多层嵌套(比如每个car里还有嵌套的字典或列表),Pandas解析时会额外消耗时间。可以用pd.json_normalize()把嵌套结构扁平化,让数据更适合CSV存储:

# 替换原来的df = pd.DataFrame(cars)
df = pd.json_normalize(cars)

这些方案都能有效降低内存占用、提升处理速度,你可以根据自己的需求选择最合适的方式~

内容的提问来源于stack exchange,提问作者M. Coppee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 14:12:45