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!