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

如何在合并多CSV文件时添加原文件名至输出文件?

给合并后的CSV添加数据来源标识的解决方案

完全可以实现,只需要在现有代码基础上做几处简单修改,就能给每条数据加上原文件的名称作为唯一标识:

修改后的完整代码

import csv
from pathlib import Path

p = Path(r'E:\Neurogen\Merging_test_data') 

file_list = p.glob("*.csv")

# 新增Source_File列,用来存储数据来源的文件名
desired_columns = ['Source_File'] + ['Chr', 'Start', 'End', 'Ref', 'Alt', 'Func.refGene', 'Gene.refGene', 'GeneDetail.refGene', 'ExonicFunc.refGene', 'AAChange.refGene', 'Xref.refGene', 'cytoBand', 'cosmic70', 'avsnp147', 'ExAC_ALL', 'ExAC_AFR', 'ExAC_AMR', 'ExAC_EAS', 'ExAC_FIN', 'ExAC_NFE', 'ExAC_OTH', 'ExAC_SAS', 'CLINSIG', 'CLNDBN', 'CLNACC', 'CLNDSDB', 'CLNDSDBID', '1000g2015aug_all', 'SIFT_score', 'SIFT_pred', 'Polyphen2_HDIV_score', 'Polyphen2_HDIV_pred', 'Polyphen2_HVAR_score', 'Polyphen2_HVAR_pred', 'LRT_score', 'LRT_pred', 'MutationTaster_score', 'MutationTaster_pred', 'MutationAssessor_score', 'MutationAssessor_pred', 'FATHMM_score', 'FATHMM_pred', 'PROVEAN_score', 'PROVEAN_pred', 'VEST3_score', 'CADD_raw', 'CADD_phred', 'DANN_score', 'fathmm-MKL_coding_score', 'fathmm-MKL_coding_pred', 'MetaSVM_score', 'MetaSVM_pred', 'MetaLR_score', 'MetaLR_pred', 'integrated_fitCons_score', 'integrated_confidence_value', 'GERP++_RS', 'phyloP7way_vertebrate', 'phyloP20way_mammalian', 'phastCons7way_vertebrate', 'phastCons20way_mammalian', 'SiPhy_29way_logOdds', 'Otherinfo']
desired_rows = []

for csv_file in file_list:
    with open(csv_file, 'r') as f:
        reader = csv.DictReader(f)
        # 获取当前处理的原文件名
        source_filename = csv_file.name
        for row in reader:
            # 构造行数据时,加入Source_File字段
            desired_row = {c: row[c] for c in desired_columns if c != 'Source_File'}
            desired_row['Source_File'] = source_filename
            desired_rows.append(desired_row)

with open('merged.csv', 'w', newline='') as f:
    writer = csv.DictWriter(f, fieldnames=desired_columns)
    writer.writeheader()
    writer.writerows(desired_rows)

关键改动说明

  • 在desired_columns开头新增'Source_File'列,确保表头会包含这个标识字段
  • 遍历每个CSV文件时,用csv_file.name获取原文件名(如果需要完整路径可以替换为str(csv_file))
  • 构造每行数据时,先提取指定业务列,再添加Source_File字段和对应的文件名
  • 写入时DictWriter会自动把新字段加入表头和每行数据中

这样合并后的CSV里,每条数据都会明确显示来自哪个原文件,完全满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 22:01:05