ホームページ >バックエンド開発 >Python チュートリアル >Pandas のグループ内で最大カウント値を持つ行を検索するにはどうすればよいですか?

Pandas のグループ内で最大カウント値を持つ行を検索するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-26 03:59:09988ブラウズ

How to Find Rows with Maximum Count Values within Groups in Pandas?

Groupby データと最大カウント値を持つ行の取得

グループ内の最大カウント値を持つ行を決定するには、groupby 操作を使用できます。 pandas DataFrame.

次のことを考慮してください。 DataFrame:

Sp Mt Value count
MM1 S1 a 3
MM1 S1 n 2
MM1 S3 cb 5
MM2 S3 mk 8
MM2 S4 bg 10
MM2 S4 dgd 1
MM4 S2 rd 2
MM4 S2 cb 2
MM4 S2 uyi 7

例 1:

私たちの目標は、各グループ (['Sp', 'Mt'] で定義) 内の行を識別することです。最大のカウント値。例 1 では、次のような出力が期待されます:

Sp Mt Value count
MM1 S1 a 3
MM1 S3 cb 5
MM2 S3 mk 8
MM2 S4 bg 10
MM4 S2 uyi 7

これを達成するには、まず各グループの最大カウント値を取得します:

df.groupby(['Sp', 'Mt'])['count'].max()

これにより、次の結果が生成されます:

Sp Mt
MM1 S1 3
MM1 S3 5
MM2 S3 8
MM2 S4 10
MM4 S2 7

次に、カウント値が各データフレーム内の最大値に等しい元の DataFrame のインデックスを抽出します。 group:

idx = df.groupby(['Sp', 'Mt'])['count'].transform(max) == df['count']
df[idx]

これにより、目的の出力が得られます。

例 2:

例 2 では、期待される出力は次のとおりです。

Sp Mt Value count
MM2 S4 bg 10
MM4 S2 cb 8
MM4 S2 uyi 8

このシナリオでは、MM4 グループ内に最大数の行が複数あります。値(8)。前と同じアプローチを使用して、両方の行を取得します:

Sp Mt Value count
MM2 S4 bg 10
MM4 S2 cb 8
MM4 S2 uyi 8

更新:

各グループ内の最大カウント値を示す新しい列を DataFrame に追加することが目標の場合、transform メソッドを使用して各グループの値を計算できます。 row:

df.groupby(['Sp', 'Mt'])['count'].max()

これにより、count_max 列を含む DataFrame が生成され、各列の最大カウント値が含まれます。グループ:

Sp Mt Value count count_max
MM1 S1 a 3 3
MM1 S1 n 2 3
MM1 S3 cb 5 5
MM2 S3 mk 8 8
MM2 S4 bg 10 10
MM2 S4 dgd 1 10
MM4 S2 rd 2 7
MM4 S2 cb 2 7
MM4 S2 uyi 7 7

以上がPandas のグループ内で最大カウント値を持つ行を検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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