Pandas グループ内の最上位レコードの取得
次のデータセットで:
df = pd.DataFrame({'id':[1,1,1,2,2,2,2,3,4], 'value':[1,2,3,1,2,3,4,1,1]})
各 ID の上位 2 つのレコード。直接的なアプローチには、groupby メソッドを使用して各グループ内の行番号を割り当てることが含まれます:
dfN = df.groupby('id').apply(lambda x:x['value'].reset_index()).reset_index()
ただし、より効率的な解決策は、head 関数によって提供されます:
df.groupby('id').head(2)
この操作により、以下が生成されます。
id value id 1 0 1 1 1 1 2 2 3 2 1 4 2 2 3 7 3 1 4 8 4 1
MultiIndex を削除して結果を平坦化するには、 use:
df.groupby('id').head(2).reset_index(drop=True)
これにより、目的の出力が得られます:
id value 0 1 1 1 1 2 2 2 1 3 2 2 4 3 1 5 4 1
したがって、head 関数は、各 Pandas グループ内の最上位のレコードを取得するための簡潔で最適化されたアプローチを提供します。
以上が各 Pandas グループ内の上位 N レコードを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。