Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah saya boleh mengekalkan lajur lain dalam Pandas DataFrame semasa operasi kumpulan mengikut?

Bagaimanakah saya boleh mengekalkan lajur lain dalam Pandas DataFrame semasa operasi kumpulan mengikut?

Barbara Streisand
Barbara Streisandasal
2024-10-27 09:09:03693semak imbas

How can I maintain other columns in a Pandas DataFrame during a groupby operation?

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!

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