Python 2.7:根据条件从csv中删除重复项
我有一个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”中值最高的行 现在我有以下内容,但它只删除相同的行:
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
对项目进行分组,并使用输出maxLogin
行
以下内容适用于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以来,有些事情发生了一些变化