使用Pandas删除仅末尾带句点差异的重复行中无句点行的方法
Pandas 末尾句点差异重复行清理方案
核心逻辑为:通过识别目标列末尾是否带句点给重复行设置保留优先级,仅保留带句点的条目,无对应带句点版本的条目会自动留存不会被误删。
操作步骤
- 生成两个临时辅助列:
base_val:目标列去掉末尾所有句点后的基准值,用于匹配仅句点差异的重复条目has_dot:布尔标记,标注当前行目标列的值是否以句点结尾
对应代码(含空值兼容处理):
import pandas as pd # 假设你的DataFrame变量名为df,目标对比列为Header A df['base_val'] = df['Header A'].str.rstrip('.', na=False) df['has_dot'] = df['Header A'].str.endswith('.', na=False) - 按优先级排序后去重:
同基准值的重复组内,将带句点的行排在最前,去重时仅保留每组第一条即可
对应代码:df = df.sort_values('has_dot', ascending=False).drop_duplicates('base_val', keep='first') # 清理临时辅助列 df = df.drop(columns=['base_val', 'has_dot'])
效果验证示例
输入原始数据:
| Header A | 关联列 |
|---|---|
| First | 1 |
| First. | 2 |
| Second | 3 |
| Third. | 4 |
处理后输出结果:
| Header A | 关联列 |
|---|---|
| First. | 2 |
| Second | 3 |
| Third. | 4 |
内容的提问来源于stack exchange,提问作者Ken Russel Sy
相关产品推荐
相关产品推荐

