如何在熊猫数据框中找到重复项? [复制]

Posted

技术标签:

【中文标题】如何在熊猫数据框中找到重复项? [复制]【英文标题】:How can I find duplicates in a pandas data frame? [duplicate] 【发布时间】:2021-04-26 04:00:33 【问题描述】:

我的任务是在 pandas 数据框中突出显示所有重复的电子邮件。 是否有此功能或删除所有非重复项的方法,这让我可以从数据集中的所有重复项中获得一个很好的列表?

该表由六列组成:

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

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

【问题讨论】:

定义“重复”的含义:您只表示“电子邮件”是相同的。或者您的意思是“电子邮件相同,或者名字和姓氏都相同”? (例如,如果 FirstName=='William' 和 LastName=='Schneider' 会怎样) "表格由六列组成" ... "我想去掉最后一列..." 你的意思是'行'! df.duplicated(keep=False) 将为您提供完整列表。如果只想保留一行,可以使用 keep='first' 将保留第一行并将其他行标记为重复。 keep='last' 执行相同的操作并将重复项标记为 True,但最后一次出现除外。如果要检查特定列,请使用子集=['colname1']。如果你想删除它们,你可以使用 drop_duplicates()。有关这两个的更多详细信息,请参阅 pandas 文档 大家请停止发布重复的答案。 SO 已经有3881 Q&A on [pandas] drop_duplicates,还有更多关于 'unique''distinct' 等的信息。所以,弄清楚这个问题应该归结到哪些。 【参考方案1】:

这样的东西可能是您正在寻找的解决方案:

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)

【讨论】:

【参考方案2】:
df = pd.DataFrame(table, columns = ['Email'])

df_duplicates_removed = pd.DataFrame.drop_duplicates(df)

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

【讨论】:

【参考方案3】:

你可以使用value_counts

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

完整的代码类似于:

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

更新 我不知道重复直到指出,所以看起来最好的方法是:

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

【讨论】:

使用重复的代替 value_counts() 只是一个比drop_duplicates/duplicated/unique 更差的替代方案。我们不需要计算所有频率,只需计算每个值是否计数 > 1 的二进制。

以上是关于如何在熊猫数据框中找到重复项? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在熊猫数据框中找到每个月的“n”个最大值? [复制]

在熊猫时间序列数据框中删除重复项

如何查找在熊猫数据框中出现最多的行项目

如何在熊猫数据框中插入列名? [复制]

如何在熊猫数据框中按条件累计计算几列[重复]

如何在熊猫数据框中仅填充选定列的空值? [复制]