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

如何用Python合并多个同表头CSV文件?避免重复表头

合并多份同表头CSV并仅保留一份表头的Python实现

下面提供两种实用的实现方案,分别适配不同场景:

方法一:使用Python标准库csv模块(无第三方依赖)

适合不想额外安装库的场景,代码轻量且内存友好,处理大文件更稳妥:

import csv
import os

# 配置参数
output_file = "merged.csv"  # 合并后的输出文件名
csv_dir = "./csv_files"     # 存放待合并CSV的目录(替换为实际路径)

# 获取目录下所有CSV文件
csv_files = [f for f in os.listdir(csv_dir) if f.endswith(".csv")]

# 打开输出文件准备写入
with open(output_file, "w", newline="", encoding="utf-8") as out_f:
    writer = csv.writer(out_f)
    header_written = False  # 标记是否已写入表头

    for filename in csv_files:
        file_path = os.path.join(csv_dir, filename)
        with open(file_path, "r", encoding="utf-8") as in_f:
            reader = csv.reader(in_f)
            if not header_written:
                # 写入第一个文件的表头和所有内容
                writer.writerows(reader)
                header_written = True
            else:
                # 跳过后续文件的表头,只写入内容行
                next(reader)  # 跳过第一行(表头)
                writer.writerows(reader)

方法二:使用pandas库(简洁高效)

如果已经安装pandas,这个方案代码更简洁,适合快速实现:

先安装pandas(若未安装):

pip install pandas

实现代码:

import pandas as pd
from glob import glob

# 匹配所有待合并的CSV文件(可调整规则,比如"csv_files/*.csv")
csv_files = glob("*.csv")

# 初始化合并后的DataFrame
merged_df = pd.DataFrame()

for idx, file in enumerate(csv_files):
    if idx == 0:
        # 第一个文件读取全部内容(包含表头)
        df = pd.read_csv(file)
    else:
        # 后续文件跳过表头,只读取数据行
        df = pd.read_csv(file, header=0)
    merged_df = pd.concat([merged_df, df], ignore_index=True)

# 保存合并后的CSV,不保留索引列
merged_df.to_csv("merged.csv", index=False, encoding="utf-8")

注意事项

  • 确保所有待合并的CSV文件表头完全一致,否则会导致数据错位或列名不匹配
  • 处理超大文件时,优先选择csv模块方案,避免pandas加载全部数据到内存导致溢出
  • 可根据需求调整文件匹配规则,比如只合并特定前缀的文件(如glob("sales_*.csv"))

内容的提问来源于stack exchange,提问作者all.m

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:10:48