gpt4 book ai didi

python - 如何用更短的时间有效地比较两个巨大的文件 csv

转载 作者:太空狗 更新时间:2023-10-29 11:09:12 25 4
gpt4 key购买 nike

我需要比较两个大的 csv 文件。但问题是我必须将 file1 的每一行与 file2 的所有其他行进行迭代,并对不同的列进行一些计算。

我在 python 中尝试的部分代码:

import csv

def getOverlap(a,b):
return max(0, min(a[1], b[1]) - max(a[0], b[0]))


masterlist = [row for row in c2]

for hosts_row in c1:
chr1 = hosts_row[3]
a1 = [int(hosts_row[4]),int(hosts_row[5])]
found = False
for master_row in masterlist:
if hosts_row[7] == master_row[7]:
c3.writerow(hosts_row)

chr2 = master_row[3]

b1 = [int(master_row[4]),int(master_row[5])]
if getOverlap(a1,b1) != 0 and chr1 == chr2:
c5.writerow(hosts_row)
else:
c6.writerow(hosts_row)


found = True
break
if not found:
c4.writerow(hosts_row)
found2 = False
for master_row2 in masterlist:
chr2 = master_row[3]
b1 = [int(master_row[4]),int(master_row[5])]
if getOverlap(a1,b1) != 0 and chr1 == chr2:
c7.writerow(hosts_row)
found2 = True
break
if not found2:
c8.writerow(hosts_row)

但是大约需要跑5到6个小时。有没有更快的方法。我有 16gb 内存。

最佳答案

关键不在于你的文件有多大,而是你的目标和算法设计的问题。

  • 一点是定义什么是差异
  • 如果两个文件中的行以相同的方式排序,那么两个不同的行将具有不同的列。

所以,也许你应该首先考虑对 csv 文件进行排序,使行顺序相同,然后你可以简单地使用模块 filecpmp .

我意识到这个答案并没有真正添加任何代码,但它提供了一些思考 Material 。它只是渴望一个评论。

关于python - 如何用更短的时间有效地比较两个巨大的文件 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22558189/

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