ホームページ >バックエンド開発 >Python チュートリアル >Pandas GroupBy 操作で最大数の行を見つける方法

Pandas GroupBy 操作で最大数の行を見つける方法

Susan Sarandon
Susan Sarandonオリジナル
2024-12-29 19:16:16144ブラウズ

How to Find Rows with the Maximum Count in Pandas GroupBy Operations?

Pandas グループで最大数の行を取得する

問題:

行を識別する方法複数でグループ化する場合、pandas DataFrame の「count」列の最大値を持つcolumns?

解決策:

ステップ 1: 各グループの最大数を見つける

各グループの最大数を決定するにはグループ化するには、groupby() 関数と max() 関数を使用します。

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

これにより、各グループの最大数を含むシリーズ。

ステップ 2: 最大数の行を特定する

元のデータフレームで最大数の行のインデックスを取得するには、transform() メソッドを使用します:

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

これにより、True が最大値を持つ行を示すブール値の Series が作成されます。 count.

ステップ 3: 最大数に基づいて行をフィルタリングします

最後に、ブール型インデックスを使用して DataFrame をフィルタリングし、最大数の行のみを選択します。

result = df[idx]

これにより、各データフレーム内の「count」列の最大値を持つ行のみを含む新しい DataFrame が返されます。 group.

例:

例 1:

df = pd.DataFrame({
    'Sp': ['MM1', 'MM1', 'MM1', 'MM2', 'MM2', 'MM2', 'MM4', 'MM4', 'MM4'],
    'Mt': ['S1', 'S1', 'S3', 'S3', 'S4', 'S4', 'S2', 'S2', 'S2'],
    'Value': ['a', 'n', 'cb', 'mk', 'bg', 'dgd', 'rd', 'cb', 'uyi'],
    'count': [3, 2, 5, 8, 10, 1, 2, 2, 7]
})

出力:

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

例2:

df = pd.DataFrame({
    'Sp': ['MM2', 'MM2', 'MM4', 'MM4', 'MM4'],
    'Mt': ['S4', 'S4', 'S2', 'S2', 'S2'],
    'Value': ['bg', 'dgd', 'rd', 'cb', 'uyi'],
    'count': [10, 1, 2, 8, 8]
})

出力:

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

注: グループ内の複数の行が最大数を持つ場合、これらの行はすべて返されます。

以上がPandas GroupBy 操作で最大数の行を見つける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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