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

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

DDD
Lepaskan: 2024-12-23 16:57:14
asal
233 orang telah melayarinya

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

Dapatkan Baris dengan Nilai Maksimum dalam Kumpulan Menggunakan Groupby

Apabila melakukan analisis data, selalunya menjadi perlu untuk mengenal pasti baris yang mempunyai nilai tertinggi untuk lajur tertentu dalam setiap kumpulan yang ditakrifkan oleh lajur lain. Operasi ini boleh dilaksanakan dengan mudah menggunakan kaedah groupby() dan transform() panda, perpustakaan Python yang digunakan secara meluas untuk manipulasi data.

Pernyataan Masalah

Diberikan panda DataFrame dengan lajur seperti 'Sp', 'Mt', 'Value' dan 'count', kami berhasrat untuk mengekstrak baris yang mempunyai nilai 'kiraan' maksimum dalam setiap kumpulan yang ditakrifkan oleh lajur 'Sp' dan 'Mt'.

Penyelesaian

Untuk mendapatkan semula baris yang dikehendaki, kita boleh gunakan langkah berikut:

  1. Kira Kiraan Maksimum untuk Setiap Kumpulan:

    • Gunakan kaedah groupby() untuk mengumpulkan DataFrame mengikut lajur 'Sp' dan 'Mt' dan kemudian gunakan fungsi max() pada lajur 'count' untuk menentukan nilai kiraan maksimum untuk setiap kumpulan.
  2. Kenal pasti Baris dengan Maksimum Kiraan:

    • Gunakan kaedah transform() untuk mengembalikan Siri boolean Benar/Salah untuk setiap baris, dengan 'Benar' menunjukkan bahawa baris itu mempunyai nilai kiraan maksimum dalam kumpulannya.
    • Dapatkan semula baris DataFrame asal yang sepadan dengan nilai True menggunakan pengindeksan.

Contoh 1

Pertimbangkan DataFrame berikut:

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

Menggunakan keputusan yang dinyatakan di atas dalam output 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

Contoh 2

Dengan DataFrame yang berbeza:

Sp Mt Value count
MM2 S4 bg 10
MM2 S4 dgd 1
MM4 S2 rd 2
MM4 S2 cb 8
MM4 S2 uyi 8

Outputnya menjadi:

Sp Mt Value count
MM2 S4 bg 10
MM4 S2 cb 8
MM4 S2 uyi 8

Pendekatan Alternatif

Pendekatan alternatif melibatkan penambahan lajur pada DataFrame yang mewakili kiraan maksimum bagi setiap kumpulan. Ini boleh dicapai menggunakan langkah berikut:

  1. Kira kiraan maksimum bagi setiap kumpulan menggunakan df.groupby(['Sp', 'Mt'])['count'].max() ungkapan.
  2. Tambah lajur baharu yang dipanggil 'count_max' pada DataFrame menggunakan df['count_max'] = df.groupby(['Sp', 'Mt'])['count'].transform(maks) ungkapan.
  3. Tapis DataFrame untuk memasukkan hanya baris dengan lajur 'bilangan' sama dengan 'count_max' lajur.

Atas ialah kandungan terperinci Bagaimana untuk Mencari Baris dengan Nilai Maksimum dalam Kumpulan dalam Panda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan