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

如何将文件夹中多个CSV文件合并为单文件并添加源文件名列、去重

CSV多文件合并问题解决方案

错误根因

  • 空DataFrame初始化放在了for循环内部,导致每次循环都会清空之前已经合并的所有数据,最终仅保留最后一次循环的文件内容
  • 未过滤隐藏文件和非CSV格式文件,会触发读取异常
  • 去重逻辑未指定判断重复的列,默认按全列匹配去重,不符合按Name+Surname去重的需求

修正后完整代码

import os
import pandas as pd

PATH_DATA_FOLDER = 'mypath/'
# 空总表必须放在循环外初始化
df_total = pd.DataFrame(columns=['Name', 'Surname', 'Country', 'File'])

for file_name in os.listdir(PATH_DATA_FOLDER):
    # 过滤隐藏文件、非CSV文件,避免读取错误
    if not file_name.endswith('.csv') or file_name.startswith('.'):
        continue
    # 读取单个CSV文件
    temp_df = pd.read_csv(os.path.join(PATH_DATA_FOLDER, file_name))
    # 新增列存储原始文件名
    temp_df['File'] = file_name
    # 追加到总表,用concat替代已废弃的append方法,效率更高
    df_total = pd.concat([df_total, temp_df], ignore_index=True)

# 按Name和Surname字段去重,keep参数可选first(保留首次出现)/last(保留末次出现)
df_total = df_total.drop_duplicates(subset=['Name', 'Surname'], keep='first').reset_index(drop=True)

# 导出合并结果到CSV
df_total.to_csv(os.path.join(PATH_DATA_FOLDER, 'merged_output.csv'), index=False, encoding='utf-8-sig')

补充说明

如果合并的文件体积较大,可以调整为按批次读取写入的逻辑,避免内存占用过高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:39:02