我在a列中有一个重复值的数据帧.我想删除重复项,将值最高的行保留在B列中.

因此:

A B
1 10
1 20
2 30
2 40
3 10

应该变成这样:

A B
1 20
2 40
3 10

我猜可能有一种简单的方法可以做到这一点,可能就像在删除重复数据之前对数据帧进行排序一样简单,但我不太了解groupby的内部逻辑,无法弄清楚它.有什么建议吗?

推荐答案

这是最后一个.但不是最大值:

In [10]: df.drop_duplicates(subset='A', keep="last")
Out[10]: 
   A   B
1  1  20
3  2  40
4  3  10

您还可以执行以下操作:

In [12]: df.groupby('A', group_keys=False).apply(lambda x: x.loc[x.B.idxmax()])
Out[12]: 
   A   B
A       
1  1  20
2  2  40
3  3  10

Python相关问答推荐

我可以使用极点优化这个面向cpu的pandas代码吗?

GEKKO:已知延迟的延迟系统的参数估计

为什么dict(id=1,**{id:2})有时会引发KeyMessage:id而不是TypMessage?

如何在PIL、Python中对图像应用彩色面膜?

opencv Python稳定的图标识别

无法使用equals_html从网址获取全文

返回nxon矩阵的diag元素,而不使用for循环

在Python中对分层父/子列表进行排序

Pandas 第二小值有条件

Pydantic 2.7.0模型接受字符串日期时间或无

韦尔福德方差与Numpy方差不同

将整组数组拆分为最小值与最大值之和的子数组

C#使用程序从Python中执行Exec文件

切片包括面具的第一个实例在内的眼镜的最佳方法是什么?

根据列值添加时区

Polars asof在下一个可用日期加入

AES—256—CBC加密在Python和PHP中返回不同的结果,HELPPP

基于行条件计算(pandas)

python sklearn ValueError:使用序列设置数组元素

巨 Python :逆向猜谜游戏