根据csv文件中列的条件保留重复行的python脚本
我试图编写一个python脚本,根据列上的条件只保留重复的行。例如,我的输入csv文件如下所示:根据csv文件中列的条件保留重复行的python脚本,python,csv,Python,Csv,我试图编写一个python脚本,根据列上的条件只保留重复的行。例如,我的输入csv文件如下所示: Name, Apt_Number, Block_Number, .... , Other_Columns John, apt1, ABC, .............., dummyVal Marie, apt2, ABC, .............., dummyVal John, apt3, XYZ, .............., dummyVal Sam
Name, Apt_Number, Block_Number, .... , Other_Columns
John, apt1, ABC, .............., dummyVal
Marie, apt2, ABC, .............., dummyVal
John, apt3, XYZ, .............., dummyVal
Sam, apt4, ABC, .............., dummyVal
Sam, apt5, LMO, .............., dummyVal
我希望我的输出csv文件如下所示:
Name, Apt_Number, Block_Number, .... , Other_Columns
John, apt1, ABC, .............., dummyVal
John, apt3, XYZ, .............., dummyVal
Sam, apt4, ABC, .............., dummyVal
Sam, apt5, LMO, .............., dummyVal
i、 e.我想保留相同名称重复出现一次,而块编号不同的行。有人能建议我如何使用python实现这一点吗?我可以探索哪种数据结构?我认为我的答案不是很完美,但您可以在从csv文件读取数据后使用for循环。使用pop从数据集中删除一行,因此只需扫描一次
import csv
data = []
with open('input.csv', 'r') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
data.append(row)
duplicate_names = []
while data:
row = data.pop()
dup_exists = False
for other_row in data:
if row['name'] == other_row['name']:
duplicate_names.append(other_row)
data.remove(other_row)
dup_exists = True
if dup_exists:
duplicate_names.append(row)
with open('output.csv', 'w') as csvfile:
fieldnames = []
for key in duplicate_names[0]:
fieldnames.append(key)
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for row in duplicate_names:
writer.writerow(row)
其他人可能知道一些更好的Python技能,并且有一个更短的方法来实现这一点