Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mencari Baris dengan Nilai Kiraan Maksimum dalam Kumpulan dalam Panda?
Data Berkumpulan dan Dapatkan Baris dengan Nilai Kiraan Maksimum
Untuk menentukan baris dengan nilai kiraan maksimum dalam kumpulan, operasi mengikut kumpulan boleh digunakan pada panda DataFrame.
Pertimbangkan perkara berikut DataFrame:
Sp | Mt | Value | count |
---|---|---|---|
MM1 | S1 | a | 3 |
MM1 | S1 | n | 2 |
MM1 | S3 | cb | 5 |
MM2 | S3 | mk | 8 |
MM2 | S4 | bg | 10 |
MM2 | S4 | dgd | 1 |
MM4 | S2 | rd | 2 |
MM4 | S2 | cb | 2 |
MM4 | S2 | uyi | 7 |
Contoh 1:
Matlamat kami adalah untuk mengenal pasti baris dalam setiap kumpulan (ditakrifkan oleh ['Sp', 'Mt']) yang mempunyai nilai kiraan tertinggi. Dalam Contoh 1, kita mempunyai output yang dijangkakan berikut:
Sp | Mt | Value | count |
---|---|---|---|
MM1 | S1 | a | 3 |
MM1 | S3 | cb | 5 |
MM2 | S3 | mk | 8 |
MM2 | S4 | bg | 10 |
MM4 | S2 | uyi | 7 |
Untuk mencapai ini, kita boleh mendapatkan nilai kiraan maksimum untuk setiap kumpulan dahulu:
df.groupby(['Sp', 'Mt'])['count'].max()
Yang menghasilkan:
Sp | Mt | |
---|---|---|
MM1 | S1 | 3 |
MM1 | S3 | 5 |
MM2 | S3 | 8 |
MM2 | S4 | 10 |
MM4 | S2 | 7 |
Kemudian, untuk mengekstrak indeks DataFrame asal di mana nilai kiraan sama dengan nilai maksimum dalam setiap kumpulan:
idx = df.groupby(['Sp', 'Mt'])['count'].transform(max) == df['count'] df[idx]
Yang menghasilkan output yang diingini.
Contoh 2:
Dalam Contoh 2, output yang dijangkakan adalah seperti berikut:
Sp | Mt | Value | count |
---|---|---|---|
MM2 | S4 | bg | 10 |
MM4 | S2 | cb | 8 |
MM4 | S2 | uyi | 8 |
Dalam senario ini, terdapat berbilang baris dalam kumpulan MM4 dengan nilai kiraan maksimum (8). Menggunakan pendekatan yang sama seperti sebelumnya, kami memperoleh kedua-dua baris:
Sp | Mt | Value | count |
---|---|---|---|
MM2 | S4 | bg | 10 |
MM4 | S2 | cb | 8 |
MM4 | S2 | uyi | 8 |
Kemas kini:
Jika matlamatnya adalah untuk menambah lajur baharu pada DataFrame yang menunjukkan nilai kiraan maksimum dalam setiap kumpulan, kita boleh menggunakan kaedah transformasi untuk mengira nilai bagi setiap baris:
df.groupby(['Sp', 'Mt'])['count'].max()
Ini akan menghasilkan DataFrame yang merangkumi lajur count_max, yang mengandungi nilai kiraan maksimum untuk setiap kumpulan:
Sp | Mt | Value | count | count_max |
---|---|---|---|---|
MM1 | S1 | a | 3 | 3 |
MM1 | S1 | n | 2 | 3 |
MM1 | S3 | cb | 5 | 5 |
MM2 | S3 | mk | 8 | 8 |
MM2 | S4 | bg | 10 | 10 |
MM2 | S4 | dgd | 1 | 10 |
MM4 | S2 | rd | 2 | 7 |
MM4 | S2 | cb | 2 | 7 |
MM4 | S2 | uyi | 7 | 7 |
Atas ialah kandungan terperinci Bagaimana untuk Mencari Baris dengan Nilai Kiraan Maksimum dalam Kumpulan dalam Panda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!