如何使用Pandas删除DataFrame中的近似重复数据行
解决方案
我们可以通过正则提取编号的公共前缀后按前缀去重实现需求,具体代码如下:
import pandas as pd # 构造示例数据 df = pd.DataFrame({ 'NUMBER': [ '682-21803-405', '682-21803-420', '682-21803-430', '694-3561821-41-1', '694-3561821-41-4', '694-3561821-41-5' ] }) # 核心逻辑:提取前缀+去重 df['prefix'] = df['NUMBER'].str.extract(r'(.+)-[^-]+$') result = df.drop_duplicates(subset='prefix', keep='first').drop(columns='prefix') print(result)
代码说明
- 正则
r'(.+)-[^-]+$'的作用是匹配最后一个-之前的所有内容作为公共前缀:.+匹配任意字符1次及以上-[^-]+$匹配最后一个-以及之后的所有非-字符
drop_duplicates的keep='first'参数指定保留每个分组的第一条数据
运行后输出结果和你期望的一致:
NUMBER 0 682-21803-405 3 694-3561821-41-1
内容的提问来源于stack exchange,提问作者js-mejden
相关产品推荐
相关产品推荐

