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