Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mendapatkan Rekod N Teratas Dalam Kumpulan dengan Cekap dalam Bingkai Data Pandas?

Bagaimanakah Saya Boleh Mendapatkan Rekod N Teratas Dalam Kumpulan dengan Cekap dalam Bingkai Data Pandas?

Barbara Streisand
Barbara Streisandasal
2024-12-05 13:24:121044semak imbas

How Can I Efficiently Retrieve the Top N Records Within Groups in a Pandas DataFrame?

Panda: Mendapatkan Rekod Teratas Dengan Cekap Dalam Kumpulan

Pertimbangkan tugas untuk mendapatkan semula dua rekod teratas dalam setiap nilai berbeza lajur tertentu dalam Bingkai Data panda. Sebagai contoh, pertimbangkan DataFrame berikut:

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

Secara tradisinya, anda mungkin mendekati masalah ini dengan menomborkan rekod dalam setiap kumpulan selepas mengumpulkan mengikut lajur yang dikehendaki:

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

Walau bagaimanapun, a pendekatan yang lebih cekap dan elegan adalah untuk memanfaatkan fungsi kepala panda:

df.groupby('id').head(2)

Ini secara langsung mengembalikan dua rekod teratas untuk setiap kumpulan, tanpa memerlukan penomboran lajur tambahan.

       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

Untuk mengalih keluar MultiIndex dan meratakan keputusan:

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

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Rekod N Teratas Dalam Kumpulan dengan Cekap dalam Bingkai Data Pandas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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