ホームページ >バックエンド開発 >Python チュートリアル >グループ化された Pandas DataFrame で最大数の行を取得するにはどうすればよいですか?
問題:
パンダ データフレームから次の行をすべて取得します。 「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 |
解決策:
import pandas as pd df.groupby(['Sp', 'Mt'])['count'].max()
これは、「Sp」と「Sp」と「Sp」の各一意の組み合わせの最大数を含むシリーズを返します。 "Mt".
idx = df.groupby(['Sp', 'Mt'])['count'].transform(max) == df['count']
これはブール マスクを作成します。True は範囲内の最大数を持つ行を示します。彼らのグループ。
df[idx]
これにより、idx マスクが True の行のみが含まれるように DataFrame がフィルターされ、目的の出力が得られます。
注: 同じグループ内に存在する場合、最大数が等しい複数の行が返されます。
以上がグループ化された Pandas DataFrame で最大数の行を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。