首页 > 解决方案 > 同时基于2列在python中删除数据集中的重复项

问题描述

我有一个 pandas 数据框,并希望根据 2 个特定列的条目是否重复来删除行,从第一行开始并向下进行(保留第一个命中并删除其他重复项)。

例如从:

Group_1 Group_2 分数
红色的 蓝色的 90
红色的 橙子 85
红色的 紫色 82
绿色的 蓝色的 79
绿色的 黄色 74

并且有一个所有条目都是唯一的输出(同时考虑两列 - 第四行被删除,因为第二列中的“蓝色”已经存在于第一行中):

Group_1 Group_2 分数
红色的 蓝色的 90
绿色的 黄色 74

标签: pythonpandasduplicates

解决方案


我不知道以 col1 OR col2 方式而不是 AND 删除重复项的任何直接方法,但您可以简单地使用 for 循环在您想要的列上按顺序删除重复项。

for col in ['Group_1', 'Group_2']:
    df.drop_duplicates(subset=col, inplace=True)

或者

for col in df.columns[:2]:
    df.drop_duplicates(subset=col, inplace=True)

它还会自动保留第一次出现,但您可以在方法中指定它: df.drop_duplicates(subset=col, inplace=True, keep='first')


推荐阅读