Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mendapatkan Baris dengan Kiraan Maksimum dalam Bingkai Data Pandas Berkumpulan?
Masalah:
Dapatkan semula semua baris daripada DataFrame panda yang mempunyai nilai maksimum untuk lajur "kira", dikumpulkan mengikut "Sp" dan "Mt" lajur.
Contoh:
Contoh 1:
Input 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 |
Dijangka Output:
Sp | Mt | Value | count |
---|---|---|---|
MM1 | S1 | a | 3 |
MM1 | S3 | cb | 5 |
MM2 | S3 | mk | 8 |
MM2 | S4 | bg | 10 |
MM4 | S2 | uyi | 7 |
Contoh 2:
Input DataFrame:
Sp | Mt | Value | count |
---|---|---|---|
MM2 | S4 | bg | 10 |
MM2 | S4 | dgd | 1 |
MM4 | S2 | rd | 2 |
MM4 | S2 | cb | 8 |
MM4 | S2 | uyi | 8 |
Dijangka Output:
Sp | Mt | Value | count |
---|---|---|---|
MM2 | S4 | bg | 10 |
MM4 | S2 | cb | 8 |
MM4 | S2 | uyi | 8 |
Penyelesaian:
import pandas as pd df.groupby(['Sp', 'Mt'])['count'].max()
Ini mengembalikan Siri dengan kiraan maksimum untuk setiap gabungan unik "Sp" dan "Mt".
idx = df.groupby(['Sp', 'Mt'])['count'].transform(max) == df['count']
Ini mencipta topeng Boolean di mana True menunjukkan baris dengan kiraan maksimum dalam kumpulan mereka.
df[idx]
Ini menapis DataFrame untuk memasukkan hanya baris dengan topeng idx adalah True, menghasilkan output yang diingini.
Nota: Berbilang baris dengan kiraan maksimum yang sama akan dikembalikan jika ia berlaku dalam kumpulan yang sama.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Baris dengan Kiraan Maksimum dalam Bingkai Data Pandas Berkumpulan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!