You need to enable JavaScript to run this app. Pandas导出DataFrame到CSV时避免覆盖原有文件实现数据累加的方法
优惠活动
大模型
产品
解决方案
定价
更多

Pandas导出DataFrame到CSV时避免覆盖原有文件实现数据累加的方法

Pandas导出CSV实现数据追加不覆盖的解决方法

你现在用的默认导出是覆盖模式,只要修改to_csv的参数或增加简单的存在性判断即可实现累加效果,两种常用方案如下:

方案1:追加写入模式(性能最优,适合大数据量场景)

pandas.DataFrame.to_csv自带追加写入参数,只需判断文件是否存在来控制是否写入表头即可:

  • 新增mode='a'参数:将默认的覆盖写入模式改为追加写入模式
  • 仅首次写入时保留header=True,后续追加时设为header=False,避免重复生成表头行
  • 可选增加encoding='utf-8-sig'参数避免中文乱码

示例代码:

import os

save_path = r'C:\Users\StageProject\Indicateurs\indStat.csv'
if os.path.exists(save_path):
    # 文件已存在,追加写入不写表头
    dfind.to_csv(save_path, index=True, header=False, mode='a', encoding='utf-8-sig')
else:
    # 文件不存在,首次写入带表头
    dfind.to_csv(save_path, index=True, header=True, encoding='utf-8-sig')

方案2:拼接新旧数据后写入(适合需去重的场景)

如果追加时需要对重复数据做过滤,可以先读取旧文件和新数据拼接后再全量写入:

import os
import pandas as pd

save_path = r'C:\Users\StageProject\Indicateurs\indStat.csv'
if os.path.exists(save_path):
    # 读取原有数据,index_col=0对应你原配置的导出索引
    old_df = pd.read_csv(save_path, index_col=0)
    # 拼接数据,可通过drop_duplicates指定列去重,无需去重则删掉该方法即可
    total_df = pd.concat([old_df, dfind]).drop_duplicates(keep='last')
    total_df.to_csv(save_path, index=True, header=True, encoding='utf-8-sig')
else:
    dfind.to_csv(save_path, index=True, header=True, encoding='utf-8-sig')

注意事项

  • 使用追加模式前需保证待写入的dfind的列名、列顺序和旧CSV文件完全一致,否则会出现列错位问题
  • 单文件体积超过1G时更推荐用方案1,避免读大文件带来的性能损耗

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 04:36:02