列ごとに重複を削除し、最大値を持つ行を保持する
データフレーム内で重複値に遭遇することは困難な場合があります。対応する値が最も大きい行を保持することが重要なシナリオでは、効果的な手法を採用することが不可欠になります。
この問題に対処するには、列 A に重複がある次のデータフレームを検討してください:
A | B |
---|---|
1 | 10 |
1 | 20 |
2 | 30 |
2 | 40 |
3 | 10 |
目的は、列 A から重複を削除し、列 B の最大値を持つ行を保持することです。理想的には、結果は次のようになります。
A | B |
---|---|
1 | 20 |
2 | 40 |
3 | 10 |
1 つのアプローチは、データフレームを並べ替えることです。重複を削除する前:
df = df.sort_values(by='B', ascending=False) df.drop_duplicates(subset='A', keep='first')
このメソッドは機能しますが、行を昇順でソートするため、最大値の保持は保証されません。この制限を克服するには、次のアプローチを使用できます。
df.groupby('A', group_keys=False).apply(lambda x: x.loc[x.B.idxmax()])
この操作は、データフレームを列 A ごとにグループ化し、列 B の最大値を持つインデックスを見つけて、対応する行を選択します。その結果、重複が削除され、最大値が保持された更新されたデータフレームが生成されます。
以上が列ごとに重複を削除し、最大値の行を保持する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。