Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana Mencari Baris dengan Nilai Minimum dalam Lajur Menggunakan Pandas GroupBy?

Bagaimana Mencari Baris dengan Nilai Minimum dalam Lajur Menggunakan Pandas GroupBy?

Susan Sarandon
Lepaskan: 2024-10-29 00:16:29
asal
1047 orang telah melayarinya

How to Find Rows with the Minimum Value in a Column Using Pandas GroupBy?

Memilih Baris dengan Nilai Minimum dalam Lajur Menggunakan Pandas GroupBy

Senario Masalah

Memandangkan Pandas DataFrame yang mengandungi berbilang lajur, tugasnya adalah untuk mengenal pasti dan pilih baris dengan nilai minimum dalam lajur tertentu untuk setiap nilai unik dalam lajur lain. Sebagai contoh, dalam DataFrame dengan lajur A, B dan C, anda ingin mendapatkan semula baris dengan nilai B minimum untuk setiap nilai A.

Penyelesaian Menggunakan GroupBy dan idxmin

Penyelesaian yang mudah dan pendekatan yang cekap untuk menyelesaikan masalah ini adalah dengan menggunakan fungsi groupby dan idxmin Pandas. Fungsi groupby mengumpulkan baris mengikut lajur yang ditentukan, manakala idxmin mengembalikan indeks baris dengan nilai minimum dalam lajur lain.

<code class="python">df.loc[df.groupby('A').B.idxmin()]</code>
Salin selepas log masuk

Barisan kod ini mencapai hasil yang diingini. Pertama, ia menggunakan groupby('A') untuk mengumpulkan DataFrame mengikut lajur A. Kemudian, ia menggunakan fungsi B.idxmin() untuk setiap kumpulan, yang mengembalikan indeks baris dengan nilai B minimum dalam kumpulan itu. Akhir sekali, fungsi loc digunakan untuk memilih baris yang sepadan dengan nilai B minimum.

Demonstrasi

Pertimbangkan DataFrame berikut:

<code class="python">df = pd.DataFrame({'A': [1, 1, 1, 2, 2, 2],
                   'B': [4, 5, 2, 7, 4, 6],
                   'C': [3, 4, 10, 2, 4, 6]})</code>
Salin selepas log masuk

Menggunakan kod penyelesaian menghasilkan keputusan berikut:

   A  B   C
2  1  2  10
4  2  4   4
Salin selepas log masuk

Output ini menunjukkan baris yang mengandungi nilai B minimum untuk setiap nilai A unik (2 untuk A=1 dan 4 untuk A=2).

Pertimbangan Tambahan

Sebagai alternatif, anda boleh menggunakan reset_index(drop=True) untuk mengalih keluar lajur indeks daripada DataFrame yang terhasil:

<code class="python">df.loc[df.groupby('A').B.idxmin()].reset_index(drop=True)</code>
Salin selepas log masuk

Ini akan memberikan anda DataFrame dengan hanya lajur yang anda perlukan .

Atas ialah kandungan terperinci Bagaimana Mencari Baris dengan Nilai Minimum dalam Lajur Menggunakan Pandas GroupBy?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan