Pandas: グループ内の最上位レコードを効率的に取得する
Pandas DataFrame を使用する場合、各グループから先頭のレコードを抽出することが頻繁に必要になります。 。一般的なアプローチは、「groupby」関数と「apply」関数を利用して各グループ内のレコードを列挙することです。
dfN = df.groupby('id').apply(lambda x:x['value'].reset_index()).reset_index()
ただし、より合理化されたアプローチもあります。
df.groupby('id').head(2)
これこのメソッドは、中間の計算を必要とせずに、最上位のレコードを直接フェッチします。さらに、生成された DataFrame は元のインデックスを維持します。
結果の MultiIndex を平坦化するには、次のコマンドを使用します。
df.groupby('id').head(2).reset_index(drop=True)
これにより、次の DataFrame が生成されます。
id | value |
---|---|
1 | 1 |
1 | 2 |
2 | 1 |
2 | 2 |
3 | 1 |
4 | 1 |
またはでは、SQL の「row_number()」ウィンドウ関数を使用して、グループ内のレコードを効率的に列挙できます。ただし、この機能は現在 Pandas では利用できません。
以上がPandas DataFrame 内の各グループから上位のレコードを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。