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

发布于 2021-01-29 17:18:34

我在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的内部逻辑足以弄清楚它。有什么建议?

关注者
0
被浏览
141
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这需要最后一个。虽然不是最大:

    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
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看