我在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