ホームページ >バックエンド開発 >Python チュートリアル >列 A の重複値に対して列 B の最大値を持つ行を保持するにはどうすればよいですか?

列 A の重複値に対して列 B の最大値を持つ行を保持するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-07 04:27:02680ブラウズ

How to Keep Rows with Maximum Values in Column B for Duplicate Values in Column A?

重複する列 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。