【问题标题】:Write new field with CSV writer使用 CSV 编写器写入新字段
【发布时间】:2026-02-15 16:20:06
【问题描述】:

如果 ID 号,我正在尝试根据 ID 号在 CSV A 上写一个新行。例如,在 CSV B 上看到,如果 ID = 1,则学生是女性,ID = 2 是男性。

CSV A(有 3 列)

ID, Age, FirstName
1,   18,   Lia
2,   18,   Joe
2,   18,   John

CSV B(有 2 列)

ID, Gender
1,    Female
2,    Male

基于此信息,所需的输出如下:

ID, Age, FirstName, Gender
1,   18,   Lia,     Female
2,   18,   Joe,     Male
2,   18,   John,    Male

如何使用 Python csv 编写器实现此目的?

【问题讨论】:

  • 我没有downvote your question because no attempt was made,因为您是新贡献者,但通常我们希望您提供honest attempt at the solution,然后然后提出具体问题关于你的实施。
  • 究竟是什么问题?
  • 为此使用pandas merge
  • @RJAdriaansen:问题询问如何在csv 模块中使用csv.writer
  • 那么 CSV A 中的所有 ID 都将是 12(因此与 CSV B 中的一个匹配)?这似乎表明,在 CSV A 中,ID 确实是 Gender——那么为什么要同时保留这两个字段呢?

标签: python excel csv writer


【解决方案1】:

我希望你做得很好,这个逻辑是基本的,但是正如你上面提到的你是 python 新手,所以我做了一些代码供你参考,下面附上

    import csv
    newColumn = ''
    genderDict = {}
    with open('CSVB.csv') as csv_file:
        csv_reader = csv.reader(csv_file, delimiter=',')
        line_count = 0

        for row in csv_reader: 
            if line_count == 0:
                newColumn = row[1]
                line_count = line_count+1
            else:
                genderDict[row[0]] = row[1]

    with open('CSVA.csv') as csv_file:
        csv_reader = csv.reader(csv_file, delimiter=',')
        line_count = 0
        for row in csv_reader:
            if line_count == 0:
                with open('OUTPUT.csv', mode='w') as employee_file:
                    output_writer = csv.writer(employee_file, delimiter=',',  quotechar='"', quoting=csv.QUOTE_MINIMAL)
                    row.append(newColumn)
                    output_writer.writerow(row)
                line_count += 1
            else:
                with open('OUTPUT.csv', mode='a') as employee_file:
                    output_writer = csv.writer(employee_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
                    row.append(genderDict[row[0]])
                    output_writer.writerow(row)
                line_count += 1

【讨论】:

    【解决方案2】:

    我不完全理解这里的事情 但是ig它会像这样

    首先创建一个新的 csv writer 对象 然后编写逻辑代码 将值附加到列表或元组 说 wobj.writerow(列表名称)

    【讨论】: