Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mencari Baris dengan Nilai Kiraan Maksimum dalam Kumpulan dalam Panda?

Bagaimana untuk Mencari Baris dengan Nilai Kiraan Maksimum dalam Kumpulan dalam Panda?

Susan Sarandon
Susan Sarandonasal
2024-12-26 03:59:09992semak imbas

How to Find Rows with Maximum Count Values within Groups in Pandas?

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!

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
Artikel sebelumnya:Sistem Pengesahan Dua FaktorArtikel seterusnya:Sistem Pengesahan Dua Faktor