[使用 Python3] 我有一个 csv 文件,我想读取并删除重复的“特殊”情况。该脚本应将重复数据删除的 csv 输出到 csv,同时尊重标头。
最好是举例说明。csv 文件看起来像这样:
ID Name HeaderX HeaderY HeaderZ ...
1 A string float string ...
1 A string float string ...
1 A string float string ...
2 A string float string ...
2 B string float string ...
3 A string float string ...
4 B string float string ...
5 C string float string ...
6 D string float string ...
... ... ... ... ... ...
这里有 ID=1 和 ID=2 的重复行,但是我想保留名称相同的所有重复行。所以在这个例子中,我想保留 ID=1 的所有实例,但删除 ID=2 的所有实例。换句话说,删除名称具有多个变体的所有重复行。(这有意义吗?!)
目前我有以下代码(如下),基于这个线程。然而,它的作用恰恰相反,根据两列删除重复项并保留 ID=2 的所有实例并删除 ID=1 的行。
另外,理想情况下,我希望脚本打印它删除的重复数。
import csv
filename = 'testing.csv'
outfile = 'outfile.csv'
with open(outfile, 'w') as fout:
writer = None
entries = set()
with open(filename, 'r') as fin:
reader = csv.DictReader(fin)
if not writer:
writer = csv.DictWriter(fout, lineterminator='\n', fieldnames=reader.fieldnames)
writer.writeheader()
for row in reader:
key = (row['ID'], row['Name'])
if key not in entries:
writer.writerow(row)
entries.add(key)