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

Bagaimanakah Saya Boleh Mendapatkan Rekod Teratas dengan Cekap daripada Setiap Kumpulan dalam Bingkai Data Pandas?

Barbara Streisand
Barbara Streisandasal
2024-11-25 18:03:10691semak imbas

How Can I Efficiently Get the Top Records from Each Group in a Pandas DataFrame?

Panda: Cekap Mendapatkan Rekod Teratas Dalam Kumpulan

Apabila bekerja dengan Pandas DataFrames, selalunya perlu mengekstrak rekod terkemuka daripada setiap kumpulan . Pendekatan biasa ialah menggunakan fungsi 'groupby' dan 'apply' untuk menghitung rekod dalam setiap kumpulan.

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

Walau bagaimanapun, wujud pendekatan yang lebih diperkemas:

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

Ini kaedah secara langsung mengambil rekod paling atas tanpa memerlukan pengiraan perantaraan. Selain itu, DataFrame yang dijana mengekalkan indeks asalnya.

Untuk meratakan MultiIndex yang terhasil, gunakan:

df.groupby('id').head(2).reset_index(drop=True)

Ini akan menghasilkan DataFrame berikut:

id value
1 1
1 2
2 1
2 2
3 1
4 1

Sebagai alternatif , anda boleh menggunakan fungsi tetingkap "row_number()" SQL untuk menghitung rekod dalam kumpulan dengan cekap. Walau bagaimanapun, ciri ini tidak tersedia dalam Panda pada masa ini.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Rekod Teratas dengan Cekap daripada Setiap Kumpulan 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