python - 熊猫根据重复的列和一个相似的列删除重复项
问题描述
给定这组样本数据:
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
解决方案
正如@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
推荐阅读
- node.js - Mongoose 在更新时不验证
- python - 随时间计算滚动平均值
- leaflet - mapbox 方向或优化 api(如何避免收费/桥梁/等)
- python - BeautifulSoup 是否支持自定义 html 标签?
- matplotlib - 如果第一个或最后一个 y 值为 NaN/None,matplotlib 会弄乱 X 轴。这是正常的吗?
- jquery - 带有表单提交的 AJAX 验证
- html - XML 字符实体不解析
- c++ - 谷歌测试:如何测试所有可能的 N 类型对?
- c - stm32CubeMX 的 cmsis_os.c 有修复吗?
- git - Git:使用多个单引用合并模拟章鱼合并