Menyimpan Lajur Lain Apabila GroupBy
Dalam bingkai data Pandas, menggunakan groupby untuk menapis baris berdasarkan lajur tertentu boleh mengakibatkan kehilangan yang lain lajur dalam output. Isu ini timbul apabila melakukan operasi kumpulan seperti mencari nilai minimum lajur dan mengecualikan baris di bawah ambang.
Untuk mengatasi had ini dan mengekalkan lajur lain semasa kumpulan mengikut, terdapat beberapa kaedah:
Kaedah 1: Menggunakan idxmin()
idxmin() mengembalikan indeks baris dengan nilai minimum untuk lajur tertentu. Dengan menggunakan ini, kita boleh memilih baris tertentu dan mengekalkan semua lajurnya:
<code class="python">df_filtered = df.loc[df.groupby("item")["diff"].idxmin()]</code>
Kaedah 2: Isih dan Pertama
Isih bingkai data mengikut lajur ke ditapis dan kemudian mengambil elemen pertama setiap kumpulan juga akan mengekalkan lajur lain:
<code class="python">df_filtered = df.sort_values("diff").groupby("item", as_index=False).first()</code>
Kedua-dua kaedah menghasilkan hasil yang sama, seperti yang dilihat dalam contoh di bawah:
<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]}) # Method 1 df_filtered1 = df.loc[df.groupby("item")["diff"].idxmin()] # Method 2 df_filtered2 = df.sort_values("diff").groupby("item", as_index=False).first() print(df_filtered1) print(df_filtered2)</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 Menyimpan Lajur Lain Apabila Menggunakan GroupBy dalam Panda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!