首页 > 解决方案 > 根据列子集删除重复项,保留列 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列中的最高值:/

(我在一个相当大的数据集上运行此代码)

任何帮助表示赞赏!

标签: pythonpandasdataframeduplicates

解决方案


您可以先根据E, D条件按降序对帧进行排序,然后删除重复项:

df.sort_values(["E", "D"], ascending=[False, False]).drop_duplicates(subset=list("ABC"))

推荐阅读