如何从dataframe中提取仅出现一次的唯一行,解决drop_duplicates参数设置问题
解决方案
你需要筛选出指定列组合仅出现1次的行即可,方案适配多列去重场景,只需调整判断重复的列名列表即可。
完整可运行代码示例
import pandas as pd # 构造示例数据 df = pd.DataFrame({ 'ORDER ID': [123, 123, 123, 456, 456, 456, 789, '000'], 'ITEM CODE': ['XXX', 'YYY', 'YYY', 'XXX', 'XXX', 'XXX', 'XXX', 'YYY'] }) # 指定判断重复的列,多列场景直接往列表里加列名即可 subset_cols = ['ORDER ID', 'ITEM CODE'] # 方法1:用drop_duplicates直接实现,逻辑最简洁 df_result = df.drop_duplicates(subset=subset_cols, keep=False) # 方法2:用分组统计实现,适合需要额外加过滤逻辑的场景 # df_result = df[df.groupby(subset_cols)[subset_cols[0]].transform('count') == 1]
输出结果验证
运行后输出完全符合预期:
ORDER ID ITEM CODE 0 123 XXX 6 789 XXX 7 000 YYY
异常排查(如果你用drop_duplicates未得到预期结果)
优先检查以下两类问题:
- 子集列的数据类型不一致,比如
ORDER ID列同时存在数字类型的123和字符串类型的'123',会被判定为不同值 - 字符串列存在不可见字符,比如
ITEM CODE列同时存在'XXX'和末尾带空格的'XXX ',会被判定为不同值
先做数据类型统一和异常字符清洗后,再执行去重逻辑即可。
内容的提问来源于stack exchange,提问作者datanerd
相关产品推荐
相关产品推荐

