ホームページ > バックエンド開発 > Python チュートリアル > Pandas DataFrame の各グループ内の上位 N レコードを効率的に取得するにはどうすればよいですか?

Pandas DataFrame の各グループ内の上位 N レコードを効率的に取得するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-25 03:16:14
オリジナル
554 人が閲覧しました

How to Efficiently Get the Top N Records within Each Group of a Pandas DataFrame?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート