搜索和比较来自两个不同的CSV文件的数据

时间:2019-06-18 19:50:01

标签: python csv

首先,请记住,我是Python的完整入门者。我一直在努力解决这个问题,整个运气都没有。

这就是我想要做的:

假设我们有两个csv文件:

文件1:

col1;col2
659039;16,9
659038;27,8
659037:36,4

文件2:

col1;col2
659037:36,4
659039;16,9
659038;30

我想在文件2的col1中搜索文件1的col1中的所有项目,如果找到了,并且col2中存在差异,请返回该行。在上述情况下,将仅返回文件2的最后一行,因为其他行是相同的(行号无关紧要)。我只想要与众不同的人。

不好解释。希望你明白我的意思。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

尝试一次做一件事。首先,从file1中提取检查file2所需的所有值,并将它们存储在易于使用的数据结构中。在下面的示例中,我遍历了file1中的所有行,并将内容收集在字典中。具体来说,键来自第一列,值来自第二列。

现在,您可以遍历file2中的每一行,并尝试查找第一列中不存在的内容作为字典中的键的任何行。如果键确实存在,请确保其值不存在匹配第二列。只有当这两个条件都满足时,您才能返回该行。

import csv

fileItems = {}
linesToReturn = []

with open('file1.csv', newline='', encoding='utf-8-sig') as file1:
    reader = csv.reader(file1, True)
    for row in reader:
        fileItems[row[0]] = row[1]

with open('file2.csv', newline='', encoding='utf-8-sig') as file2:
    reader = csv.reader(file2, True)
    for row in reader:
        if fileItems.get(row[0]) != row[1]:
            linesToReturn.append(row)

print(linesToReturn)

如果您要使用csv搜索文件,请查看文档here.

答案 1 :(得分:-1)

将您的问题分解为子问题。您可以按照以下步骤使用Pandas框架来实现这一目标-

  1. 读取csv文件。
  2. 使用pandas框架比较两个列。您可以参考-https://www.shanelynn.ie/python-pandas-read_csv-load-data-from-csv-files/
  3. 如果找到所需的差异,请将行添加到python列表中
  4. 在代码末尾返回列表。