列Aの重複を削除し、列Bの最高値の行を残します 質問する

列Aの重複を削除し、列Bの最高値の行を残します 質問する

列 A に繰り返し値を持つデータフレームがあります。重複を削除し、列 B に最高値を持つ行を保持したいと考えています。

したがって、この:

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

次のように変わるはずです:

A B
1 20
2 40
3 10

おそらくこれを行う簡単な方法があると思います。重複を削除する前に DataFrame を並べ替えるのと同じくらい簡単かもしれませんが、groupby の内部ロジックを十分に理解していないため、それを理解できません。何か提案はありますか?

ベストアンサー1

これは最後のものを使用します。ただし、最大値ではありません。

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

おすすめ記事