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!