重複する列 A の値に対して列 B の最大値を持つ行を検索する
データ分析では、多くの場合、重複レコードを保持したまま削除する必要があります。ユニークなデータ。一般的なシナリオには、特定の列 (列 A) に重複した値を持つデータセットが含まれます。この場合の目標は、最も高い値を持つ行を別の列 (列 B) に保持することです。
これを達成するには、最初のこのソリューションでは、drop_duplicates() 関数を keep="last" パラメーターとともに使用します。これにより、列 B の値に関係なく、最後に表示された行が保持されながら、列 A に基づいて重複行が削除されます。
ただし、目的が列 B の最大値を持つ行を保持することである場合、上記は解決策は適切ではありません。代わりに、提供されている 2 番目の解決策と同様に、groupby() と apply() の組み合わせを使用できます。このアプローチでは、行を列 A ごとにグループ化し、各グループに関数を適用し、各グループ内の列 B の最大値を持つ行を選択します。
実装:
import pandas as pd # Create data frame with duplicate values in column A df = pd.DataFrame([[1, 10], [1, 20], [2, 30], [2, 40], [3, 10]], columns=['A', 'B']) # Keep row with maximum value in column B for each duplicate in column A max_b_rows = df.groupby('A', group_keys=False).apply(lambda x: x.loc[x.B.idxmax()]) # Display resulting data frame print(max_b_rows)
出力:
A B A 1 1 20 2 2 40 3 3 10
以上が列 A の重複値に対して列 B の最大値を持つ行を保持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。