python:按列A删除重复项,将值最高的行保留在列B中

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

因此:

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

应该变成这样:

A B
1 20
2 40
3 10

Wes添加了一些很好的功能来删除重复项:http://wesmckinney.com/blog/?p=340. 但是AFAICT,它是为精确复制而设计的,所以没有提到选择保留哪些行的标准

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

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

[10]on

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

您还可以执行以下操作:

[12]on

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

发表评论