Python:在非常大的CSV中比较列

2024-09-30 16:26:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个csv文件(实际上是制表符分隔的)

文件1有65014行。它的格式是ID编号从第一列开始(不按顺序)

文件2有7901252行。格式如下:

[ ID number | lang | other data]。例如:[64 | deu | Guten Tag]

如果文件2中的ID号与文件1中的ID号一起出现在列中,并且它具有我感兴趣的lang,那么我想将文件2中的那一行复制到字典中

首先,我将文件1中的所有ID号放在一个列表中:

savedIDs = []
targetLang = 'deu'
phrases = {}

with open('File1.csv', 'r', encoding='utf-8') as file1:
    reader = csv.reader(file1, delimiter='\t')
    for row in reader:
        savedIDs.append(row[0])

这种情况发生得相当快。然后遍历File2,对照列表进行检查并保存到字典中:

with open('File2.csv', 'r', encoding='utf-8') as file2:
    reader = csv.reader(file2, delimiter='\t')
    for row in reader:
        if row[1] == targetLang and row[0] in savedIDs:
            phrases[row[0]] = (row[2], []) # second value gets filled in later with translation

这第二部分花费了令人无法接受的时间,也许每秒3行

有什么方法可以更快的完成吗?我应该使用PANDAS或其他模块来处理csv


Tags: 文件csvinid列表lang字典格式