如何在数据帧中找到重复项?

2024-09-29 04:31:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我的任务是突出显示熊猫数据框中的所有电子邮件副本。 是否有一个函数用于此操作,或者有一种方法可以删除所有非重复项,从而为我留下一个很好的列表,列出数据集中的所有重复项

该表由六列组成:

Email, FirstName, LastName, C_ID, A_ID, CreatedDate
a@a.com, Bill, Schneider, 123, 321, 20190502
a@a.com, Damian, Schneider, 124, 231, 20190502
b@b.com, Bill, Schneider, 164, 313, 20190503

我想去掉最后一列,因为最后一封邮件不是重复的


Tags: 数据方法函数comid列表电子邮件email
3条回答
df = pd.DataFrame(table, columns = ['Email'])

df_duplicates_removed = pd.DataFrame.drop_duplicates(df)

(其中table是原始数据帧的名称)

类似这样的解决方案可能就是您正在寻找的解决方案:

import pandas as pd
series = [
    ('a@a.com','Bill', 'Schneider', 123, 321, 20190502),
    ('a@a.com', 'Damian', 'Schneider', 124, 231, 20190502),
    ('b@b.com', 'Bill', 'Schneider',164, 313, 20190503)
    ]

# Create a DataFrame object
df = pd.DataFrame(series, columns=['email', 'first name', 'last name', 'C_ID', 'A_ID', 'CreatedDate'])

# Find duplicate rows
df_duplicates = df[df.email.duplicated()]
print(df_duplicates)

您可以使用value_counts

这将为您提供每封电子邮件的计数(作为一个系列)。然后遍历该系列并删除仅包含1个值的任何行

完整代码如下:

for index, value in df.Email.value_counts().iteritems(): 
    if value == 1: 
        df = df[df.Email != index] 

更新 我不知道duplicated til指出了什么,所以看起来最好的方法是:

df[df.Email.duplicated(keep=False)] 

相关问题 更多 >