根据列的子集删除重复项,保留列 E 中具有最高值的行,如果 E 中的值相等,则保留列 B 中具有最高值的行
Drop duplicates based on subset of columns keeping the rows with highest value in col E & if values equal in E the rows with highest value in col 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, keeping 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"))
假设我有以下数据框:
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, keeping 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"))