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

Pandas写入CSV如何追加数据并避免重复表头?

解决Pandas追加CSV数据不覆盖且无重复表头的问题

核心问题分析

你当前的代码每次都会创建带表头的空finalDf,再追加单条数据后写入文件:

  • 直接写入时会覆盖原有文件,导致旧数据丢失;
  • 使用mode='a+'追加时,每次写入都会带上表头,最终造成表头重复。

下面提供两种实用解决方案:


方法一:判断文件存在性,按需写入表头

通过判断目标CSV文件是否存在,决定是否写入表头,仅在文件首次创建时写入表头,后续追加只写数据。

import pandas as pd
import os

# 构造要追加的新数据
new_data = pd.DataFrame({
    "sourcez": ["str(source_Path)_New"],
    "tergetz": ["str(target_path)_New"],
    "TMP": ["total_matching_points_New"]
})

csv_file = "Testing.csv"

if os.path.exists(csv_file):
    # 文件已存在,追加数据,不写入表头
    new_data.to_csv(csv_file, index=False, mode="a", header=False)
else:
    # 文件不存在,首次写入,包含表头
    new_data.to_csv(csv_file, index=False)

方法二:合并新旧数据后写入(适合小数据量场景)

如果数据量不大,可以直接读取原有CSV数据,与新数据合并后整体写入,天然避免重复表头和数据覆盖。

import pandas as pd

csv_file = "Testing.csv"

# 构造新数据
new_data = pd.DataFrame({
    "sourcez": ["str(source_Path)_New"],
    "tergetz": ["str(target_path)_New"],
    "TMP": ["total_matching_points_New"]
})

try:
    # 读取已有数据
    existing_data = pd.read_csv(csv_file)
    # 合并新旧数据,重置索引
    combined_data = pd.concat([existing_data, new_data], ignore_index=True)
except FileNotFoundError:
    # 文件不存在,直接使用新数据
    combined_data = new_data

# 写入合并后的数据
combined_data.to_csv(csv_file, index=False)

两种方法对比

  • 方法一:无需读取原有文件,性能更优,适合大数据量的追加场景;
  • 方法二:逻辑更直观,无需额外判断文件状态,适合数据量较小的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:06:02