ホームページ >バックエンド開発 >Python チュートリアル >Pandas DataFrame のグループ内の上位 N レコードを効率的に取得するにはどうすればよいですか?
pandas DataFrame の特定の列の各個別の値内の上位 2 つのレコードを取得するタスクを考えてみましょう。例として、次の DataFrame について考えてみましょう:
df = pd.DataFrame({'id':[1,1,1,2,2,2,2,3,4], 'value':[1,2,3,1,2,3,4,1,1]})
従来、目的の列でグループ化した後、各グループ内のレコードに番号を付けることで、この問題に対処できます。
dfN = df.groupby('id').apply(lambda x:x['value'].reset_index()).reset_index()
ただし、より効率的で洗練されたアプローチは、pandas の head 関数を活用することです。
df.groupby('id').head(2)
これは、各グループの上位 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 を削除して結果を平坦化するには:
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
以上がPandas DataFrame のグループ内の上位 N レコードを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。