有效地消除重复的电子邮件:使用大熊猫和sql
的全面数据清理指南问题
在本文中,我将介绍delete duplicate emails Leetcode problem。
leetcode将此问题描述为简单。这是一个非常合理的评估,因为该解决方案仅需要基本的SQL或PANDAS知识。
问题描述如下:
编写一个解决方案删除所有重复的电子邮件,只保留一封独特的电子邮件与最小的
id
。对于SQL用户,请注意,您应该编写
DELETE
语句而不是SELECT
。对于熊猫用户,请注意,您应该在适当的位置修改
Person
。运行脚本后,显示的答案是
Person
表。驱动程序将首先编译并运行您的代码,然后显示Person
表。Person
表的最终顺序无关紧要。+-------------+---------+ | Column Name | Type | +-------------+---------+ | id | int | | email | varchar | +-------------+---------+ id is the primary key (column with unique values) for this table. Each row of this table contains an email. The emails will not contain uppercase letters.
解决方案
熊猫
Pandas是用于数据分析和操纵的绝佳Python工具。该库中内置的是drop duplicates函数。请注意,问题声明要求我们做这个in place。
使用熊猫库这可以通过id
字段的先行排序来实现,然后从email
删除重复项。我们想至少保留第一个重复的元素。
def delete_duplicate_emails(person: pd.DataFrame) -> None:
person.sort_values(by='id', inplace=True)
person.drop_duplicates(subset='email', keep='first', inplace=True)
瞧!我喜欢这些简单的问题。
SQL
在SQL中,我们想运行删除查询。我们将抓取person
表的两份副本,并根据email
进行匹配。为了保留至少一种解决方案,我们仅删除具有较高id
值的条目。这使email
与最小的id
相关。
DELETE p1
FROM person p1, person p2
WHERE p1.email = p2.email AND p1.id > p2.id;
与许多问题一样,有多种方法可以解决它们。这些熊猫和SQL解决方案只是解决删除重复问题的一种方法。