首页 > 解决方案 > 熊猫根据重复的列和一个相似的列删除重复项

问题描述

给定这组样本数据:

ID    Name     Address
2     Smith    123 Main Street, Redwood, IL, 12345
2     Smith    123 Main, Redwood, 12345
2     Smith    123 Mn Street, Redwood, 12345
2     Smith    456 E. Wallace Drive, Morona, Washington

我将如何使用 pandas 删除可以处理前三行的重复项,而使第四行保持不变?显然,我可以根据前两列删除重复项,但这将是一个错误,因为它只会保留上面 4 行中的一个。如果前两行相同并且第三行有 n 个共同字符,则目标是以某种方式删除重复项。我尝试了各种 drop 副本版本,当然,没有什么能做到。如何根据两列作为重复项和第三列基于两个字符串之间共有的 n 个字符来删除重复项?

预期的输出将是:

ID    Name     Address
2     Smith    123 Mn Street, Redwood, 12345
2     Smith    456 E. Wallace Drive, Morona, Washington

标签: pythonpandasduplicates

解决方案


正如@PierreD 告诉你的那样,如果你想正确地完成它,任务并不简单。然而,这里有一个关于如何提取地址的第一个数字并使用它来添加一个新的级别来检测重复的快速指针:

df['Number'] = df['Address'].str.extract('(\d+)')
df.drop_duplicates(subset=['ID', 'Name', 'Number'])

输出:

   ID   Name                                   Address Number
0   2  Smith       123 Main Street, Redwood, IL, 12345    123
3   2  Smith  456 E. Wallace Drive, Morona, Washington    456

推荐阅读