1. ホーム
  2. パイソン

[解決済み】A列で重複を削除し、B列で最大値を持つ行を保持する

2022-04-02 07:43:47

質問

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

だから、これ。

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

このようになるはずです。

A B
1 20
2 40
3 10

多分、重複を削除する前にDataFrameをソートするのと同じくらい簡単な方法があると思うのですが、groupbyの内部ロジックをよく知らないので、それを理解することができません。 何かいい方法はないでしょうか?

どのように解決するのですか?

これで最後です。最大ではありませんが。

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