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

如何使用Python的csv模块按ID匹配拼接两个CSV文件的对应字段

实现逻辑

先读取CSV B构建ID到Gender的映射字典,再遍历CSV A逐行匹配ID追加Gender字段,最后写入目标文件即可,全程只用Python内置csv模块,无需安装第三方依赖:

import csv

# 构建ID-Gender映射字典
gender_mapping = {}
with open("csv_b.csv", encoding="utf-8") as f:
    reader = csv.DictReader(f)
    # 清理字段名前后的多余空格
    reader.fieldnames = [name.strip() for name in reader.fieldnames]
    for row in reader:
        id_val = row["ID"].strip()
        gender_val = row["Gender"].strip()
        gender_mapping[id_val] = gender_val

# 处理CSV A并写入结果到CSV C
with open("csv_a.csv", encoding="utf-8") as f_in, open("csv_c.csv", "w", encoding="utf-8", newline="") as f_out:
    reader = csv.DictReader(f_in)
    # 目标CSV表头为A的表头加Gender
    out_fields = reader.fieldnames + ["Gender"]
    writer = csv.DictWriter(f_out, fieldnames=out_fields)
    writer.writeheader()

    for row in reader:
        current_id = row["ID"].strip()
        # 匹配Gender,无匹配则留空避免报错
        row["Gender"] = gender_mapping.get(current_id, "")
        writer.writerow(row)

注意事项

  • 若你的CSV文件是GBK编码,将代码中所有encoding="utf-8"改为encoding="gbk"即可
  • 代码默认做了字段名、字段值的去空格处理,适配你示例中字段前后有多余空格的场景,若你的实际CSV无多余空格可删除所有.strip()
  • Windows平台写入CSV加newline=""是为了避免输出文件出现多余空行,Linux/macOS环境可省略该参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 03:51:03