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]})
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()
Walau bagaimanapun, penyelesaian yang lebih cekap disediakan oleh fungsi kepala:
df.groupby('id').head(2)
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
Untuk mengalih keluar MultiIndex dan meratakan hasilnya, gunakan:
df.groupby('id').head(2).reset_index(drop=True)
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
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!