如何比较两个csv文件的特定列?

时间:2018-07-10 21:19:54

标签: python csv

比方说,我有两个csv文件-fileonefiletwo-都具有列[类别,名称,价格,供应商]。在vendor列中,fileone的值为“ Georgia Malayv”,filetwo的值为“ Georgia”。如您所见,fileonefiletwo在“供应商”列中均以“乔治亚州”作为值。我希望代码检查列供应商,并且我想要一个新的csv文件来打印几乎相同的值。

例如:

  • fileone具有以下值:

    ['France', 'Pizza', 12.55, 'Georgia Malayv']
    
  • filetwo具有以下值:

    ['Belgium', 'Steak', 15.99, 'Georgia']
    

如果您查看两个文件的最后一个值,则会看到“ Georgia”在两个文件中,但它们彼此不相等。我怎么能告诉计算机这些行是-根据我的说法,因为两个文件都有'Georgia'-彼此相等,并且可以打印filetwo的整行?

可以做到吗?如果我对自己的解释不够清楚,我很乐意编辑问题或回答您的问题。这是我尝试过的:

with open('product1.csv', 'r') as mp, open('product2.csv', 'r') as yb:
    fileone = mp.readlines()
    filetwo = yb.readlines()

with open('update.csv', 'w') as outFile:
    for mp_item in fileone:
        for yb_item in filetwo:
            # mp_item[3] is the vendor column
            if mp_item[3] == True:
                outFile.write(mp_item)

此代码未在新的csv文件中打印任何内容。

1 个答案:

答案 0 :(得分:0)

这应该做到:

with open ("update.csv", "w") as output_file:
    for mp_item in fileOne:
        for yb_item in fileTwo: 
            shortest = min (mp_item [3], yb_item [3])
            longest = max (mp_item [3], yb_item [3])
            if shortest in longest: 
                outFile.write (mp_item)

这将确定哪个较长,哪个较短,并检查较短的那个是否在较长的那个。