Mengekalkan Lajur Lain Semasa Operasi Mengikut Kumpulan
Apabila melakukan operasi kumpulan demi bingkai data panda, selalunya perlu mengekalkan lajur yang tidak terlibat dalam proses pengumpulan atau pengagregatan. Secara lalai, lajur lain ini digugurkan apabila operasi selesai. Ini boleh menjadi masalah jika lajur yang disimpan mengandungi maklumat berharga.
Pertimbangkan bingkai data berikut:
item diff otherstuff 0 1 2 1 1 1 1 2 2 1 3 7 3 2 -1 0 4 2 1 3 5 2 4 9 6 2 -6 2 7 3 0 0 8 3 2 9
Jika kita mengumpulkan bingkai data mengikut lajur "item" dan cari nilai minimum lajur "perbezaan", bingkai data yang terhasil akan kelihatan seperti ini:
item diff 0 1 1 1 2 -6 2 3 0
Perhatikan bahawa lajur "bahan lain" telah digugurkan. Untuk mengekalkan lajur ini, kita boleh menggunakan kaedah idxmin() untuk mendapatkan indeks unsur perbezaan minimum, dan kemudian pilihnya:
>>> df.loc[df.groupby("item")["diff"].idxmin()] item diff otherstuff 1 1 1 2 6 2 -6 2 7 3 0 0 [3 rows x 3 columns]
Kaedah lain ialah mengisih bingkai data mengikut "perbezaan " lajur, dan kemudian ambil elemen pertama dalam setiap kumpulan item:
>>> df.sort_values("diff").groupby("item", as_index=False).first() item diff otherstuff 0 1 1 2 1 2 -6 2 2 3 0 0 [3 rows x 3 columns]
Kedua-dua kaedah ini akan menghasilkan hasil yang diingini, sambil mengekalkan lajur "bahan lain". Perlu diingat bahawa indeks yang terhasil mungkin berbeza walaupun kandungan baris adalah sama.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengekalkan lajur lain dalam Pandas DataFrame semasa operasi kumpulan mengikut?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!