gpt4 book ai didi

python-2.7 - 在 Python 中比较两个 CSV 文件

转载 作者:行者123 更新时间:2023-12-01 03:39:30 25 4
gpt4 key购买 nike

我有两个 CSV 文件,如下所示:

CSV1:

**ID  Name  Address  Ph**
1 Mr.C dsf 142
2 Ms.N asd 251
4 Mr.V fgg 014
12 Ms.S trw 547

CSV2:
**ID  Name  Service  Day**
1 Mr.C AAA Mon
2 Ms.N AAA Mon
2 Ms.N BBB Tue
2 Ms.N AAA Sat

如您所见,CSV1 文件是独一无二的,因为每个 ID 只有 1 个实例,而 CSV2 有重复。

我试图根据 ID 匹配两个 CSV 文件,然后在它们匹配的任何地方将 CSV1 中的地址和 Ph 字段添加到 CSV2 文件。然后将其保存为新的输出文件,保留两个原始 CSV 文件不变。

我写了一个代码,但这是发生了什么:
  • CSV1 中的所有条目都添加到 CSV2 的最后一行
  • 或者来自 CSV2 的所有条目都附加了相同的地址详细信息

  • 这是我到目前为止所做的。
    import csv
    csv1=open('C:\csv1file.csv')
    csv2=open('C:\csv2file.csv')
    csv1reader=csv.reader(csv1)
    csv2reader=csv.reader(csv2)

    outputfile=open('C:\mapped.csv', 'wb')
    csvwriter=csv.writer(outputfile)

    counter=0
    header1=csv1reader.next()
    header2=csv2reader.next()

    csvwriter.writerow(header2+header1[2:4])

    for row1 in csv1reader:
    for row2 in csv2reader:
    if row1[0]==row2[0]:
    counter=counter+1
    csvwriter.writerow(row2+row1[2:4])

    我在 Python 2.7 中运行此代码。您可能已经猜到,我得到的两个不同结果是基于上述代码中 csvwriter 语句的缩进。我觉得我很接近答案并理解逻辑,但不知何故循环不能很好地循环。

    你们中的任何人都可以提供帮助吗?

    谢谢。

    最佳答案

    问题出现是因为内循环只工作一次。原因是,因为运行一次循环后 csv2reader 将为空

    解决此问题的一种方法是复制第二个文件中的行并在循环中使用该副本

    csvwriter.writerow(header2+header1[2:4])

    csv2copy=[]
    for row2 in csv2reader: csv2copy.append(row2)

    for row1 in csv1reader:
    for row2 in csv2copy:
    print row1,row2,counter
    if row1[0]==row2[0]:
    counter=counter+1
    csvwriter.writerow(row2+row1[2:4])

    关于python-2.7 - 在 Python 中比较两个 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31868113/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com