python - 根据列子集删除重复项,保留列 E 中具有最高值的行,如果 E 中的值相等,则列 B 中具有最高值的行
问题描述
假设我有以下数据框:
A B C D E
3 2 1 4 5
3 2 1 2 3
4 5 6 7 8
4 5 6 9 8
9 3 8 5 4
我想根据 A、B 和 C 列删除重复项,保留 E 列最高的行。如果 E 列中的值相同,则保留 D 列最高的行。
所以上面的数据框会变成:
A B C D E
3 2 1 4 5
4 5 6 9 8
9 3 8 5 4
我在那里看到了答案的开头:python pandas: Remove duplicates by columns A, keep the row with the highest value in column B但不幸的是我不知道如何处理如果E列中的值相同则保留D列中的最高值:/
(我在一个相当大的数据集上运行此代码)
任何帮助表示赞赏!
解决方案
您可以先根据E, D
条件按降序对帧进行排序,然后删除重复项:
df.sort_values(["E", "D"], ascending=[False, False]).drop_duplicates(subset=list("ABC"))
推荐阅读
- ios - 让我的 Firemonkey 应用程序 (Tokyo R3) 部署到我的测试设备
- c++ - 在 C++ 中在全局范围内运行代码(是否有更现代的方法)?
- reactjs - 在 React 中在哪里声明我的函数和变量
- flutter - 实现导航器时出现异常。使用不包含 Navigator 的上下文请求的 Navigator 操作
- python - python request.post的语法错误
- types - Ada:子类型转换或调用'Base
- javascript - Selenium WebDriver 网页点击事件不起作用
- html - 样式未应用于角度组件
- css - 动画方向反转时更改 CSS 属性
- c++ - 将 shared_ptr 返回到 C++ 中的基类