【问题标题】:Finding Duplicates based on equal values in multiple columns根据多列中的相等值查找重复项
【发布时间】:2021-05-01 12:09:28
【问题描述】:

我使用 pandas 获取了所有重复电子邮件的列表,但并非所有电子邮件重复实际上都是联系人的重复,因为公司可能很小,因此所有员工都拥有相同的电子邮件地址。

Email FirstName LastName Phone Mobile Company
a@company-a.com John Doe 12342 65464 Company_a
a@company-a.com John Doe 43214 45645 Comp_ny A
a@company-a.com Adam Smith 34223 46456 Company A
b@company-b.com Bill Gates 23423 63453 Company B
b@company-b.com Bill Gates 32421 43244 Comp B
b@company-b.com Elon Musk 42342 34234 Company B

这就是为什么我想出以下条件来进一步过滤我的电子邮件重复列表:

我想提取数据框中电子邮件、名字和姓氏相等的所有情况,因为这几乎肯定意味着这是一个真正的重复。提取的数据框最终应如下所示:

Email FirstName LastName Phone Mobile Company
a@company-a.com John Doe 12342 65464 Company_a
a@company-a.com John Doe 43214 45645 Comp_ny A
b@company-b.com Bill Gates 23423 63453 Company B
b@company-b.com Bill Gates 32421 43244 Comp B

我怎样才能到达那里?是否可以检查多个相等条件?

对于最佳做法的任何反馈,我将不胜感激。

谢谢!

【问题讨论】:

标签: python excel pandas datatable


【解决方案1】:

使用pd.drop_duplicates

df.drop_duplicates(subset=['Email', 'FirstName', 'LastName'], keep='first')

输出

Email   FirstName   LastName    Phone   Mobile  Company
0   a@company-a.com John    Doe 12342   65464   Company_a
2   a@company-a.com Adam    Smith   34223   46456   Company A
3   b@company-b.com Bill    Gates   23423   63453   Company B
5   b@company-b.com Elon    Musk    42342   34234   Company B

获取副本

df[~df.index.isin(df.drop_duplicates(subset=['Email', 'FirstName', 'LastName'], keep='first').index)]

输出


Email   FirstName   LastName    Phone   Mobile  Company
1   a@company-a.com John    Doe 43214   45645   Comp_ny A
4   b@company-b.com Bill    Gates   32421   43244   Comp B

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-27
    • 2013-02-12
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    相关资源
    最近更新 更多