如何高效合并多个CSV文件:避免列表追加,直接批量读取与连接

星枫小哥_8458

星枫小哥_8458

2026-10-16

987人浏览

原创

如何高效合并多个CSV文件:避免列表追加,直接批量读取与连接

本文介绍一种更高效的CSV文件批量合并策略,通过避免频繁的list.append()操作和单次pd.concat()调用,改用分批惰性读取或两两归并方式,显著降低内存抖动与运行时开销,特别适用于每8个小型CSV(6列×5行)需合并一次的模型评估场景。

本文介绍一种更高效的csv文件批量合并策略,通过避免频繁的`list.append()`操作和单次`pd.concat()`调用,改用分批惰性读取或两两归并方式,显著降低内存抖动与运行时开销,特别适用于每8个小型csv(6列×5行)需合并一次的模型评估场景。

在您的当前实现中,使用 data.append(data_value) 将每个 pd.DataFrame 逐个加入 Python 列表,再统一调用 pd.concat(data),看似简洁,实则存在两个关键性能瓶颈:

  1. 内存冗余:每次 append() 都会触发列表动态扩容(可能伴随内存拷贝),而每个 DataFrame 本身已含独立内存块,导致对象引用与底层数据双重开销;
  2. concat 低效性:pd.concat() 在输入为长列表时需预分配目标内存并多次拷贝,尤其当列表长度达数十甚至上百时,时间复杂度接近 O(n²)。

✅ 推荐优化方案:分批生成器 + 单次 concat

不累积中间列表,而是用生成器按需读取、即时拼接。结合您“每8个文件合并一次”的业务逻辑,可精准控制批次:

import pandas as pd
import os
from pathlib import Path

def batch_concat_csv(file_paths, batch_size=8, **read_csv_kwargs):
    """
    按指定批次大小读取并合并CSV文件,返回DataFrame生成器(每批一个)
    """
    for i in range(0, len(file_paths), batch_size):
        batch = file_paths[i:i + batch_size]
        # 使用 pd.concat + 生成器表达式,避免中间列表
        df_batch = pd.concat(
            (pd.read_csv(fp, **read_csv_kwargs) for fp in batch),
            ignore_index=True,
            sort=False
        )
        yield df_batch

# 示例:收集所有CSV路径(替代 os.walk 的嵌套循环)
csv_files = []
for root, _, files in os.walk("your_root_dir"):
    for file in files:
        if file.endswith(".csv"):
            csv_files.append(os.path.join(root, file))

# 每8个文件合并为一个DataFrame,并保存
for idx, combined_df in enumerate(batch_concat_csv(
    csv_files, 
    batch_size=8,
    sep='\t',
    header=0  # 显式指定,避免自动推断开销
)):
    output_path = f"merged_batch_{idx+1:03d}.csv"
    combined_df.to_csv(output_path, index=False, sep='\t')
    print(f"✓ Saved {output_path} ({len(combined_df)} rows)")

? 进阶建议:两两归并(适合超大批量或内存受限场景)
若文件总数极大(如 >1000),或需流式写入磁盘以节省内存,可采用“归并排序式”两两合并策略:

  • 第一轮:file1+file2 → temp1, file3+file4 → temp2, …
  • 第二轮:temp1+temp2 → temp1_2, temp3+temp4 → temp3_4, …
  • 依此类推,直至只剩一个文件

该方式将内存峰值稳定在 2×单文件内存,且磁盘IO可异步化。注意:无需递归函数——用循环+临时目录管理即可,避免栈溢出与状态混乱。

QuickBooks Mileage CSV
QuickBooks Mileage CSV

使用 qbo-mileage CLI 及用户凭证,从 Airtable、Outlook 或 Google Calendar 记录生成 QuickBooks Online 里程 CSV 文件。

下载

⚠️ 关键注意事项

  • 始终显式传入 header=0 和 sep='\t' 等参数,禁用 pd.read_csv 的自动类型推断(infer_datetime_format=False, low_memory=False);
  • 若所有CSV结构完全一致(同列名、同类型),添加 dtype 参数可进一步提速;
  • 对于仅6×5的小文件,pd.read_csv 本身开销占比高,可考虑 numpy.loadtxt 或 csv.reader + pd.DataFrame 构造,但需权衡开发成本;
  • 使用 Path 替代 os.path 提升路径可读性与跨平台健壮性。

综上,摒弃“读→存列表→全量concat”模式,转向“按需读取+批次合并”或“两两归并”,能将I/O密集型任务的吞吐量提升3–10倍,同时大幅降低GC压力与内存碎片。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

csv csv文件

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

2025.12.04

320

15

Python 数据清洗与预处理实战
Python 数据清洗与预处理实战

本专题系统讲解 Python 在数据清洗与预处理中的核心技术,包括使用 Pandas 进行缺失值处理、异常值检测、数据格式化、特征工程与数据转换,结合 NumPy 高效处理大规模数据。通过实战案例,帮助学习者掌握 如何处理混乱、不完整数据,为后续数据分析与机器学习模型训练打下坚实基础。

2026.01.31

252

21

Python数据分析与Pandas高级实战
Python数据分析与Pandas高级实战

本专题围绕 Python 数据分析展开,系统讲解 Pandas 的高级用法,包括数据清洗、透视表、时间序列分析以及多表合并与分组操作。通过实战案例,帮助开发者掌握高效处理与分析数据的方法,提高数据处理效率与分析能力。

2026.04.13

511

25

Python uv使用教程
Python uv使用教程

本专题汇总了 Python uv 使用教程与高效使用指南,从 uv 安装配置、常用命令到虚拟环境、依赖管理与项目打包,系统讲解如何用 uv 替代 pip 与 poetry,全面提升 Python 项目开发效率,助你快速上手这一现代化包管理工具,打造干净高效的 Python 工作流。

2026.10.15

0

15

剧云AI短剧创作教程合集
剧云AI短剧创作教程合集

本专题聚焦剧云AI短剧创作,讲解从短剧灵感、梗概、全局大纲到分集、分场和正文的完整流程及节奏设计方法。

2026.10.14

0

15

剧云AI剧本创作零基础入门
剧云AI剧本创作零基础入门

本专题系统讲解剧云AI剧本创作流程,涵盖灵感、梗概、大纲、分场与正文生成,帮助新手快速完成首个中文剧本项目。

2026.10.14

0

14

VibeKnow文档转视频操作指南
VibeKnow文档转视频操作指南

本专题讲解VibeKnow上传Word、TXT、Markdown等材料生成视频的方法,覆盖内容解析、脚本组织、画面生成与成片检查。

2026.10.14

0

15

VibeKnow知识视频制作与导出详解
VibeKnow知识视频制作与导出详解

本专题整理VibeKnow从注册、素材上传、AI生成到预览导出的完整操作,帮助新手快速制作第一条知识讲解视频。

2026.10.14

0

13

二狗PPT大纲编辑实操指南
二狗PPT大纲编辑实操指南

本专题聚焦二狗PPT结构化大纲的生成和修改,讲解标题、正文、目录、页数与页面顺序的调整方法,提升汇报逻辑和内容完整性。

2026.10.14

0

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.7万人学习