Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mendapatkan Rekod N Teratas dengan Cekap dalam Setiap Kumpulan Pandas?

Bagaimana untuk Mendapatkan Rekod N Teratas dengan Cekap dalam Setiap Kumpulan Pandas?

Patricia Arquette
Lepaskan: 2024-12-02 19:27:14
asal
982 orang telah melayarinya

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

Mendapatkan Rekod Tertinggi dalam Kumpulan Panda

Dalam set data berikut:

df = pd.DataFrame({'id':[1,1,1,2,2,2,2,3,4], 'value':[1,2,3,1,2,3,4,1,1]})
Salin selepas log masuk

kami ingin mendapatkan dua rekod teratas untuk setiap id. Pendekatan yang mudah melibatkan pemberian nombor baris dalam setiap kumpulan menggunakan kaedah kumpulan mengikut:

dfN = df.groupby('id').apply(lambda x:x['value'].reset_index()).reset_index()
Salin selepas log masuk

Walau bagaimanapun, penyelesaian yang lebih cekap disediakan oleh fungsi kepala:

df.groupby('id').head(2)
Salin selepas log masuk

Operasi ini menghasilkan:

       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
Salin selepas log masuk

Untuk mengalih keluar MultiIndex dan meratakan hasilnya, gunakan:

df.groupby('id').head(2).reset_index(drop=True)
Salin selepas log masuk

Ini menghasilkan output yang diingini:

    id  value
0   1      1
1   1      2
2   2      1
3   2      2
4   3      1
5   4      1
Salin selepas log masuk

Oleh itu, fungsi kepala menyediakan pendekatan yang ringkas dan dioptimumkan untuk mendapatkan semula rekod tertinggi dalam setiap kumpulan Panda.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Rekod N Teratas dengan Cekap dalam Setiap Kumpulan Pandas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan