DataFrame の各グループ内の上位 n レコードを取得する
DataFrame 内の各グループの上位 n レコードを取得するには、Pandas の利用を検討してください。効率的な方法。 「id」列と「value」列を持つ次の DataFrame があるとします。
df = pd.DataFrame({'id': [1, 1, 1, 2, 2, 2, 2, 3, 4], 'value': [1, 2, 3, 1, 2, 3, 4, 1, 1]})
groupby() 関数と head() 関数を使用すると、各「id」の上位 2 レコードを取得できます。
df_top2 = 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 を平坦化して削除するには行インデックスが重複している場合は、reset_index():
df_top2 = df.groupby('id').head(2).reset_index(drop=True)
Result:
id value 0 1 1 1 1 2 2 2 1 3 2 2 4 3 1 5 4 1
または、各グループの上位 n を選択する前にレコードを並べ替える必要がある場合は、最初に並べ替えを適用します。 :
df_sorted = df.sort_values('value', ascending=False) df_top2 = df_sorted.groupby('id').head(2)
これにより、グループ内の各グループ内の上位レコードを取得するための、より効率的かつ洗練されたアプローチが提供されます。データフレーム。
以上がPandas DataFrame の各グループ内の上位 N レコードを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。