python - 同时基于2列在python中删除数据集中的重复项
问题描述
我有一个 pandas 数据框,并希望根据 2 个特定列的条目是否重复来删除行,从第一行开始并向下进行(保留第一个命中并删除其他重复项)。
例如从:
Group_1 | Group_2 | 分数 |
---|---|---|
红色的 | 蓝色的 | 90 |
红色的 | 橙子 | 85 |
红色的 | 紫色 | 82 |
绿色的 | 蓝色的 | 79 |
绿色的 | 黄色 | 74 |
并且有一个所有条目都是唯一的输出(同时考虑两列 - 第四行被删除,因为第二列中的“蓝色”已经存在于第一行中):
Group_1 | Group_2 | 分数 |
---|---|---|
红色的 | 蓝色的 | 90 |
绿色的 | 黄色 | 74 |
解决方案
我不知道以 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')
推荐阅读
- c++ - 在 C++ UDP 服务器中同时处理多个客户端
- csv - 如何将数据从 CSV 文件加载到 Highcharts sankey 图
- r - for循环不填充数据框以在ggplot中绘制椭圆
- sql - 如何在sql中的select命令中拆分表的列
- vue.js - 无法从 vue-cli 创建 vue-web-extension
- pandas - 排序后磁盘上压缩文件的大小大幅增加?
- python - ModuleNotFoundError:没有名为“jupyter_core”的模块
- ios - 当 viewContext.automaticallyMergesChangesFromParent 设置为 true 时,viewContext 指的是什么父级?
- javascript - JavaScript 重构未按预期工作
- python - 如何在 Reportlab 中创建多行文本字段?