【问题标题】:How do I import 2 CSV files, compare values if one exists in another and produce a final CSV with a column stating if value exists?如何导入 2 个 CSV 文件,比较另一个文件中是否存在值,并生成最终的 CSV,其中有一列说明值是否存在?
【发布时间】:2021-03-02 11:14:57
【问题描述】:

我有 2 个包含这些列的 csv 文件

CSV 1

CSV 2

所需的输出将是另一个 CSV 文件,其中包含来自 CSV1 的所有列,并查看它是否存在于 CSV2 中。如果为 True,则“Exist”列将包含 1,如果为 False,则包含 0。

有没有什么方法可以在不使用 Pandas 的情况下尽可能高效地做到这一点?

【问题讨论】:

  • 你之前尝试过熊猫吗?我认为使用 pandas 非常有效,尤其是用于 CSV 文件等数据管理。
  • 是的,我有并且我使用 MERGE 解决了这个问题,但我试图挑战自己在没有 Pandas 的情况下解决这个问题。我知道您可以使用 Python 中的“导入 CSV”模块导入 CSV 文件

标签: python python-3.x csv


【解决方案1】:

如果您想在不使用 Pandas 或其他软件包的情况下打开 CSV 文件,这是可能的,但效率不高。那是因为您需要手动根据分隔符类型进行读取和拆分。示例如下:

假设您分别有 list1.txt 和 list2.txt

name,email
red,red@gmail.com
blue,blue@gmail.com
name,email
green,green@gmail.com
red,red@gmail.com

然后,尝试运行下面的脚本

file = open('list1.txt', 'r')
data1 = file.readlines()
for i in range(len(data1)):
    data1[i] = data1[i].rstrip().split(',')
file.close()

file = open('list2.txt', 'r')
data2 = file.readlines()
for i in range(len(data2)):
    data2[i] = data2[i].rstrip().split(',')
file.close()

for i in range(1,len(data1)):
    isexist = 0
    for j in range(len(data2)):
        if (data1[i][0] == data2[j][0]) and (data1[i][1] == data2[j][1]):
            isexist = 1
            print(data1[i][0], data1[i][1], isexist)
    if isexist == 0:
        print(data1[i][0], data1[i][1], isexist)

最后,你有如下输出

red red@gmail.com 1
blue blue@gmail.com 0

希望对您的问题有所帮助。

【讨论】:

    猜你喜欢
    • 2014-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多