Dapatkan n Rekod Tertinggi dalam Setiap Kumpulan dalam DataFrame
Untuk mendapatkan n rekod teratas bagi setiap kumpulan dalam DataFrame, pertimbangkan untuk menggunakan Pandas' kaedah yang cekap. Katakan kita mempunyai DataFrame berikut dengan lajur 'id' dan 'value':
df = pd.DataFrame({'id': [1, 1, 1, 2, 2, 2, 2, 3, 4], 'value': [1, 2, 3, 1, 2, 3, 4, 1, 1]})
Menggunakan fungsi groupby() dan head(), kita boleh mendapatkan semula 2 rekod teratas untuk setiap 'id':
df_top2 = df.groupby('id').head(2)
Output:
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 meratakan MultiIndex dan menghapuskan pendua indeks baris, gunakan reset_index():
df_top2 = df.groupby('id').head(2).reset_index(drop=True)
Keputusan:
id value 0 1 1 1 1 2 2 2 1 3 2 2 4 3 1 5 4 1
Sebagai alternatif, jika rekod perlu dipesan sebelum memilih n teratas untuk setiap kumpulan, gunakan pengisihan dahulu:
df_sorted = df.sort_values('value', ascending=False) df_top2 = df_sorted.groupby('id').head(2)
Ini menyediakan pendekatan yang lebih cekap dan elegan untuk mendapatkan rekod teratas dalam setiap kumpulan dalam DataFrame.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Rekod N Teratas dengan Cekap dalam Setiap Kumpulan Bingkai Data Pandas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!