去重功能的工作机制:保留首行还是末行?
数据处理去重的工作逻辑与保留规则
数据处理中的去重功能没有统一的默认规则,完全取决于你使用的工具、库或者自定义的处理逻辑——常见的「保留第一行」「保留最后一行」两种策略都有广泛应用,以下是不同场景的具体情况:
- Excel:自带的「删除重复值」功能默认保留重复组里的第一行,删除后续重复行;但你可以通过「高级筛选」自定义设置为保留最后一行。
- Python pandas:
drop_duplicates()方法默认保留第一行(对应参数keep='first'),但可以通过参数灵活修改:- 传入
keep='last'即可保留重复组的最后一行 - 传入
keep=False会直接删除所有重复行
示例代码:
# 默认保留第一行 df.drop_duplicates(subset='目标列名') # 保留最后一行 df.drop_duplicates(subset='目标列名', keep='last') - 传入
- SQL:
DISTINCT关键字仅返回唯一值,但不会明确指定保留哪一行;如果要精准控制保留第一/最后一行,需要结合排序和窗口函数实现,比如用ROW_NUMBER()标记后筛选:-- 按id升序,保留每组重复值的第一行 SELECT * FROM ( SELECT *, ROW_NUMBER() OVER(PARTITION BY 重复列 ORDER BY id ASC) AS rn FROM 数据表 ) t WHERE rn = 1; -- 按id降序,保留每组重复值的最后一行 SELECT * FROM ( SELECT *, ROW_NUMBER() OVER(PARTITION BY 重复列 ORDER BY id DESC) AS rn FROM 数据表 ) t WHERE rn = 1;
简单总结:多数工具的默认行为是保留第一行,但几乎都支持自定义配置成保留最后一行,具体规则完全由你使用的工具参数或自定义逻辑决定。
内容的提问来源于stack exchange,提问作者variable
相关产品推荐
相关产品推荐

