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

datatable追加合并多CSV是否比pandas DataFrame更快及最优方案咨询

问题解答

问题1:改用datatable实现合并的速度表现

答案是肯定的,速度会比你现在用的pandas方案快很多。
首先datatable的CSV读写是原生C级优化,读CSV速度普遍是pandas的310倍,写CSV速度也比pandas`pd.to_csv`快25倍,单文件读写的基础性能优势已经很明显。其次你现在用的pandas逐文件追加方案本身有额外开销:pandas的append/concat操作每次都会生成新的DataFrame副本,数据量越大,重复内存拷贝的损耗越高,而datatable的行绑定rbind操作是原生优化的,追加时的内存拷贝开销极低,合并环节的效率提升会比单纯读写的提升更突出。如果是处理总大小10GB以上的多CSV合并,这个方案的整体耗时大概率能降到你原有pandas方案的1/3甚至更低。

问题2:非pandas的最快CSV合并实现方式

可以根据你的使用场景选对应方案,性能从高到低排序如下:

  • 无校验纯合并场景(最快):如果所有CSV的表头完全一致,不需要做数据类型校验、格式转换、内容清洗,最快的方式是直接用系统级文件拼接命令,完全不需要加载数据到内存,耗时只和文件总大小有关,比任何Python库的实现都快10倍以上。
    示例命令:
    • Linux/macOS:cat *.csv | awk 'NR==1 || !/^你的表头内容正则/' > merged.csv,其中awk逻辑是用来去重多个文件的重复表头
    • Windows:copy /b *.csv merged.csv,执行后手动删掉文件中多余的表头行即可
  • 需要同步做数据处理场景:就是你提到的datatable方案,如果需要在读入时做字段筛选、类型转换、简单清洗,datatable是最优选择,参考实现代码:
    import datatable as dt
    from pathlib import Path
    
    # 读取目标目录下所有CSV
    csv_path_list = list(Path("./目标csv目录").glob("*.csv"))
    merged_dt = dt.Frame()
    for csv_p in csv_path_list:
        temp_dt = dt.fread(csv_p)
        merged_dt = dt.rbind(merged_dt, temp_dt)
    # 输出合并结果
    merged_dt.to_csv("merged_result.csv")
    
  • 需要复杂数据处理场景:可以选polars库,它的CSV读写、合并性能和datatable接近,API设计更贴近pandas,上手成本更低,性能也远高于pandas。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:06:03