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

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

Susan Sarandon
Susan Sarandonasal
2024-10-29 00:16:29977semak imbas

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>

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>

Menggunakan kod penyelesaian menghasilkan keputusan berikut:

   A  B   C
2  1  2  10
4  2  4   4

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>

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!

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