Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menambah Lajur pada DataFrame Berkumpulan Selepas Operasi Kumpulan mengikut Pandas?

Bagaimana untuk Menambah Lajur pada DataFrame Berkumpulan Selepas Operasi Kumpulan mengikut Pandas?

DDD
DDDasal
2024-10-19 12:02:30876semak imbas

How to Add a Column to a Grouped DataFrame After Groupby Operations in Pandas?

Tambah Lajur pada Bingkai Data Berkumpulan dalam panda

Apabila bekerja dengan operasi GroupBy dalam panda, adalah berfaedah untuk menambah maklumat tambahan pada hasil rangka data. Artikel ini meneroka soalan tentang cara menambahkan lajur pada bingkai data berkumpulan dengan cekap selepas melakukan pengagregatan kumpulan mengikut pengagregatan.

Pertimbangkan bingkai data berikut:

df = pd.DataFrame({'c':[1,1,1,2,2,2,2],'type':['m','n','o','m','m','n','n']})

Matlamatnya adalah untuk mengira nilai bagi lajur 'jenis' untuk setiap nilai 'c' dan tambah lajur baharu pada bingkai data terkumpul yang mewakili 'saiz' setiap kumpulan 'c'. Selepas melakukan pengagregatan kumpulan mengikut:

g = df.groupby('c')['type'].value_counts().reset_index(name='t')

bingkai data 'g' kini mengandungi kiraan 'jenis' untuk setiap 'c':

   c type  t
0  1    m  1
1  1    n  1
2  1    o  1
3  2    m  2
4  2    n  2

Untuk menambah lajur 'saiz' , satu pilihan ialah menggunakan fungsi peta:

a.index = a['c']
g['size'] = g['c'].map(a['size'])

Walau bagaimanapun, terdapat pendekatan yang lebih mudah menggunakan fungsi transformasi:

g['size'] = df.groupby('c')['type'].transform('size')

Menggunakan transformasi, lajur saiz boleh ditambah terus ke bingkai data 'g', menjajarkan indeks dengan bingkai data asal. Bingkai data yang terhasil:

   c type  t  size
0  1    m  1     3
1  1    n  1     3
2  1    o  1     3
3  2    m  2     4
4  2    n  2     4

Atas ialah kandungan terperinci Bagaimana untuk Menambah Lajur pada DataFrame Berkumpulan Selepas Operasi Kumpulan mengikut Pandas?. 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