【发布时间】:2015-08-05 08:59:39
【问题描述】:
我有一个 csv 文件,我每天都会添加重复的和唯一的数据。这涉及太多重复项。我必须根据特定列删除重复项。例如:
csvfile1:
title1 title2 title3 title4 title5
abcdef 12 13 14 15
jklmn 12 13 56 76
abcdef 12 13 98 89
bvnjkl 56 76 86 96
现在,基于 title1、title2 和 title3,我必须删除重复项并将唯一条目添加到新的 csv 文件中。如您所见,abcdef 行不是唯一的,并且基于 title1、title2 和 title3 重复,因此应将其删除,输出应如下所示:
预期输出 CSV 文件:
title1 title2 title3 title4 title5
jklmn 12 13 56 76
bvnjkl 56 76 86 96
我尝试过的代码如下:CSVINPUT 文件 导入csv
f = open("1.csv", 'a+')
writer = csv.writer(f)
writer.writerow(("t1", "t2", "t3"))
a =[["a", 'b', 'c'], ["g", "h", "i"],['a','b','c']] #This list is changed daily so new and duplicates data get added daily
for i in range(2):
writer.writerow((a[i]))
f.close()
重复删除脚本:
import csv
with open('1.csv','r') as in_file, open('2.csv','w') as out_file:
seen = set() # set for fast O(1) amortized lookup
for line in in_file:
if line not in seen: continue # skip duplicate
out_file.write(line)
我的输出: 2.csv:
t1 t2 t3
a b c
g h i
现在,我不希望 2.csv 中基于 t1 和 t2 的 b c 只有基于 t1 和 t2 的唯一 g h i
【问题讨论】:
-
你有什么问题?