如何用pandas实现SQL select distinct功能提取唯一行数据
Pandas多列组合去重(等效SQL SELECT DISTINCT)
pandas原生提供drop_duplicates()方法,天然支持多列有序组合去重,完全符合需求,无需自行实现扫描去重逻辑。
基础用法
全列组合去重
对DataFrame所有列的取值组合做去重,直接调用:
# df为原始DataFrame df_distinct = df.drop_duplicates()
指定列组合去重
如果只需要判断部分列的组合是否重复,传入subset参数指定列名:
# 仅按col1、col2两列的有序组合判断重复 df_distinct = df.drop_duplicates(subset=['col1', 'col2'])
特性说明
- 多列组合判断严格按列顺序识别,
(2,1)和(1,2)会被判定为不同值,完全匹配SQL DISTINCT的行为逻辑 - 返回结果为标准DataFrame格式,默认保留重复组的第一行记录,和示例输出顺序一致
- 可通过
keep参数调整保留规则:keep='first'(默认):保留重复组的第一条记录keep='last':保留重复组的最后一条记录keep=False:删除所有存在重复的记录
示例验证
针对给出的测试数据,调用代码如下:
import pandas as pd # 构造输入数据 df = pd.DataFrame([ [1, 2], [2, 3], [1, 2], [4, 5], [2, 3], [2, 1] ], columns=['col1', 'col2']) # 执行去重 df_distinct = df.drop_duplicates() print(df_distinct)
输出结果:
col1 col2 0 1 2 1 2 3 3 4 5 5 2 1
和要求的SQL DISTINCT输出完全一致。
内容的提问来源于stack exchange,提问作者Bruce
相关产品推荐
相关产品推荐

