Python 2.7:根据条件从csv中删除重复项

Python 2.7:根据条件从csv中删除重复项,python,python-2.7,csv,Python,Python 2.7,Csv,我有一个csv文件,其格式如下: Username,Name,Phone,Email,Country,Login John23,John Doe,99999999,johndoe@yahoo.com,Italy,1585589097.787715 John23,John Doe,99999999,johndoe@yahoo.com,Italy,1585652050.037622 我想删除包含重复“Username”的行,只保留“Login”中值最高的行 现在我有以下内容,但它只删除相同的行:

我有一个csv文件,其格式如下:

Username,Name,Phone,Email,Country,Login
John23,John Doe,99999999,johndoe@yahoo.com,Italy,1585589097.787715
John23,John Doe,99999999,johndoe@yahoo.com,Italy,1585652050.037622
我想删除包含重复“Username”的行,只保留“Login”中值最高的行

现在我有以下内容,但它只删除相同的行:

#remove duplicates and generate new csv
from more_itertools import unique_everseen

with open('jornalnoticias.csv','r') as f, open('jornalnoticias_full.csv','w') as out_file:
    out_file.writelines(unique_everseen(f))

您可以使用读取CSV文件,使用
UserName
对项目进行分组,并使用输出max
Login

以下内容适用于Python2.7:

from csv import DictReader, DictWriter
from collections import defaultdict

with open("jornalnoticias.csv", mode="rb") as fin, open("jornalnoticias_full.csv", mode="w") as fout:
    reader = DictReader(fin)
    writer = DictWriter(fout, fieldnames=reader.fieldnames)

    # Group by username
    groups = defaultdict(list)
    for row in reader:
        groups[row["Username"]].append(row)

    # Write to CSV file
    writer.writeheader()
    for username, group in groups.items():

        # Get max login and write row
        highest_login = max(group, key=lambda x: float(x['Login']))
        writer.writerow(highest_login)
jornalias_full.csv

Username,Name,Phone,Email,Country,Login
John23,John Doe,99999999,johndoe@yahoo.com,Italy,1585652050.037622
注意:最好使用最新的Python 3.8。自Python 2.7以来,有些事情发生了一些变化