【发布时间】:2018-05-10 18:27:07
【问题描述】:
我有两个 CSV:
CSV1
id, count
1, 5
2, 10
100, 1
CSV2
id, count
100, 5
1, 10
2, 1
我需要将 CSV 与 id 进行比较,并获取两者的计数并找出差异。我的预期结果是:
id, Diff
1, -5
100, -4
2, 9
现在我使用嵌套循环:
with open('csv1.csv', 'r') as t1, open('csv2.csv', 'r') as t2:
fileone = csv.DictReader(t1)
filetwo = csv.DictReader(t2)
csv1 = list(fileone)
csv2 = list(filetwo)
for data in csv1:
for datum in csv2:
if data['id'] == datum['id']:
diff = int(data['count']) - int(datum['count'])
if diff > 0:
print(diff)
item = [[
str(data['id']),
str(data['count']),
str(datum['count']),
str(diff)]]
writer.writerows(item)
但是由于上面的代码在循环中做了一个循环,所以如果我有大文件 O(n^2),它需要很长时间。无论如何我可以很容易地在python中进行比较。
【问题讨论】:
-
听起来像是
pandas恕我直言的工作 -
你看过
pandas吗?一个简单的join加上一些算术会让这个速度很快 -
如果没有 pandas,您可以使用字典来匹配 id。这会将复杂度降低到 O(n)
标签: python csv comparison