力扣刷题(第四十四天)
灵感来源
- 保持更新,努力学习
- python脚本学习
删除重复的电子邮箱
解题思路
这个问题要求我们删除表中所有重复的电子邮箱,只保留每个唯一电子邮箱对应的最小id
记录。解决这个问题的关键在于识别出哪些记录是重复的,并确定需要删除的记录。
在 Pandas 中,我们可以通过分组操作和过滤来达到。
- 按电子邮箱分组
- 对于每个分组,找出最小的 id
- 过滤掉 id 不是最小的记录
import pandas as pddef delete_duplicate_emails(person: pd.DataFrame) -> None:# 假设实际列名是全小写的 'id' 和 'email'email_column = 'email'id_column = 'id'# 按Email分组并找出每个组中的最小Idmin_ids = person.groupby(email_column)[id_column].min()# 过滤出Id不在最小Id列表中的记录,并删除它们person.drop(person[~person[id_column].isin(min_ids)].index, inplace=True)
逐行解释
import pandas as pddef delete_duplicate_emails(person: pd.DataFrame) -> None:# 按Email分组并找出每个组中的最小Idmin_ids = person.groupby('Email')['Id'].min()# 过滤出Id不在最小Id列表中的记录,并删除它们person.drop(person[~person['Id'].isin(min_ids)].index, inplace=True)# 不需要返回任何东西,因为题目要求直接修改DataFrame