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
Lepaskan: 2024-10-27 09:09:03
asal
718 orang telah melayarinya

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
Salin selepas log masuk

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                 
Salin selepas log masuk

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]
Salin selepas log masuk

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]
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan