Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menambah Lajur Baharu dengan Penjumlahan Berkumpulan dalam Panda Menggunakan `transform()`?

Bagaimana untuk Menambah Lajur Baharu dengan Penjumlahan Berkumpulan dalam Panda Menggunakan `transform()`?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-24 10:46:14865semak imbas

How to Add a New Column with Grouped Summation in Pandas Using `transform()`?

Mencipta Lajur Baharu Berdasarkan Penjumlahan Berkumpulan dalam Panda

Pernyataan Masalah

Apabila cuba mencipta lajur baharu berdasarkan penjumlahan nilai dikumpulkan mengikut tarikh menggunakan panda' groupby(), keputusan NaN ditemui. Objektifnya adalah untuk menambah lajur yang memaparkan jumlah jumlah nilai tertentu untuk semua tarikh, tanpa mengira bilangan baris yang dikaitkan dengan tarikh tersebut.

Penyelesaian

Untuk mencapai ini, transformasi () fungsi digunakan. Tidak seperti fungsi apply(), yang mengendalikan baris demi baris, transform() melakukan pengiraan pada data terkumpul dan mengembalikan siri yang sejajar dengan kerangka data asal.

df['Data4'] = df['Data3'].groupby(df['Date']).transform('sum')

Berikut ialah pecahan langkah demi langkah :

  • df['Data3'].groupby(df['Date']): Baris ini mengumpulkan Lajur 'Data3' mengikut 'Tarikh'.
  • transform('sum'): Fungsi 'transform' digunakan pada objek terkumpul, mengira jumlah 'Data3' untuk setiap kumpulan tarikh.
  • Hasilnya ialah satu siri yang sejajar dengan kerangka data asal, membolehkan ia ditambah sebagai lajur baharu bernama 'Data4'.

Contoh Penggunaan

Pertimbangkan rangka data berikut:

         Date   Sym  Data2  Data3
0  2015-05-08  aapl     11      5
1  2015-05-07  aapl      8      8
2  2015-05-06  aapl     10      6
3  2015-05-05  aapl     15      1
4  2015-05-08  aaww    110     50
5  2015-05-07  aaww     60    100
6  2015-05-06  aaww    100     60
7  2015-05-05  aaww     40    120

Menggunakan fungsi transform():

df['Data4'] = df['Data3'].groupby(df['Date']).transform('sum')

Hasil dalam:

         Date   Sym  Data2  Data3  Data4
0  2015-05-08  aapl     11      5     55
1  2015-05-07  aapl      8      8    108
2  2015-05-06  aapl     10      6     66
3  2015-05-05  aapl     15      1    121
4  2015-05-08  aaww    110     50     55
5  2015-05-07  aaww     60    100    108
6  2015-05-06  aaww    100     60     66
7  2015-05-05  aaww     40    120    121

Seperti yang terbukti daripada output, Lajur 'Data4' kini memegang jumlah 'Data3' untuk setiap nilai 'Tarikh' unik.

Atas ialah kandungan terperinci Bagaimana untuk Menambah Lajur Baharu dengan Penjumlahan Berkumpulan dalam Panda Menggunakan `transform()`?. 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