根据csv文件中列的条件保留重复行的python脚本

根据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

我试图编写一个python脚本,根据列上的条件只保留重复的行。例如,我的输入csv文件如下所示:

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技能,并且有一个更短的方法来实现这一点