Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengekalkan Lajur Semasa Groupby dengan Pemilihan Nilai Minimum dalam Panda?
Memelihara Lajur Semasa Groupby dengan Pemilihan Nilai Minimum
Masalah:
Apabila membuat persembahan kumpulanby operasi pada bingkai data panda untuk memilih baris dengan nilai minimum untuk lajur tertentu, lajur lain selalunya digugurkan secara tidak sengaja. Ini boleh menjadi masalah apabila maklumat tambahan daripada lajur ini dikehendaki.
Penyelesaian 1: Menggunakan idxmin() untuk Pemilihan Indeks
Untuk mengekalkan lajur yang lain, satu pendekatan ialah untuk menggunakan idxmin() untuk mendapatkan indeks elemen dengan nilai minimum untuk lajur yang ditentukan. Indeks ini kemudiannya boleh digunakan untuk memilih baris yang sepadan daripada bingkai data asal:
<code class="python">df_min = df.loc[df.groupby("item")["diff"].idxmin()]</code>
Penyelesaian 2: Mengisih dan Memilih Elemen Pertama
Kaedah alternatif ialah untuk mengisih kerangka data mengikut lajur nilai minimum dan kemudian pilih elemen pertama daripada setiap kumpulan:
<code class="python">df_min = df.sort_values("diff").groupby("item", as_index=False).first()</code>
Contoh:
Kedua-dua penyelesaian ini mencapai hasil yang diinginkan daripada mengekalkan lajur lain sambil memilih baris dengan nilai minimum untuk lajur yang ditentukan:
<code class="python">df = pd.DataFrame({ "item": [1, 1, 1, 2, 2, 2, 2, 3, 3], "diff": [2, 1, 3, -1, 1, 4, -6, 0, 2], "otherstuff": [1, 2, 7, 0, 3, 9, 2, 0, 9] }) df_min_idx = df.loc[df.groupby("item")["diff"].idxmin()] df_min_sort = df.sort_values("diff").groupby("item", as_index=False).first() print(df_min_idx) print(df_min_sort)</code>
Output:
item diff otherstuff 1 1 1 2 6 2 -6 2 7 3 0 0 item diff otherstuff 0 1 1 2 1 2 -6 2 2 3 0 0
Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Lajur Semasa Groupby dengan Pemilihan Nilai Minimum dalam Panda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!