ホームページ >バックエンド開発 >Python チュートリアル >グループ化された Pandas DataFrame で最大数の行を取得するにはどうすればよいですか?

グループ化された Pandas DataFrame で最大数の行を取得するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-20 07:14:12768ブラウズ

How to Get Rows with the Maximum Count in Grouped Pandas DataFrames?

グループ化された Pandas DataFrames で最大数の行を取得する

問題:

パンダ データフレームから次の行をすべて取得します。 「Sp」と「Mt」でグループ化された「count」列の最大値columns.

例:

例 1:

入力データフレーム:

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

予想される出力:

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

例 2:

入力データフレーム:

Sp Mt Value count
MM2 S4 bg 10
MM2 S4 dgd 1
MM4 S2 rd 2
MM4 S2 cb 8
MM4 S2 uyi 8

Expected出力:

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

解決策:

  1. グループごとの最大数の取得:
import pandas as pd

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

これは、「Sp」と「Sp」と「Sp」の各一意の組み合わせの最大数を含むシリーズを返します。 "Mt".

  1. ブール マスクを作成します:
idx = df.groupby(['Sp', 'Mt'])['count'].transform(max) == df['count']

これはブール マスクを作成します。True は範囲内の最大数を持つ行を示します。彼らのグループ。

  1. をフィルタリングします。 DataFrame:
df[idx]

これにより、idx マスクが True の行のみが含まれるように DataFrame がフィルターされ、目的の出力が得られます。

注: 同じグループ内に存在する場合、最大数が等しい複数の行が返されます。

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

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