列 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