Tambah Lajur pada GroupBy DataFrame Menggunakan Pandas Transform
Apabila bekerja dengan operasi kumpulan dalam panda, selalunya berguna untuk menambah lajur baharu pada bingkai data yang terhasil. Satu kaedah untuk mencapai ini ialah menggunakan fungsi .map(), seperti yang ditunjukkan dalam contoh. Walau bagaimanapun, pendekatan alternatif dan lebih mudah ialah menggunakan fungsi .transform().
.transform() membolehkan kami menggunakan fungsi pada setiap kumpulan dalam rangka data dan mengembalikan Siri dengan hasilnya. Siri yang dikembalikan akan mempunyai indeks yang sejajar dengan bingkai data asal.
Untuk menggambarkan, mari kita mulakan dengan bingkai data yang disediakan:
df = pd.DataFrame({'c': [1, 1, 1, 2, 2, 2, 2], 'type': ['m', 'n', 'o', 'm', 'm', 'n', 'n']})
Matlamat kami adalah untuk mengira nilai jenis bagi setiap c dan tambah lajur dengan saiz c.
g = df.groupby('c')['type'].value_counts().reset_index(name='t')
Kod ini mengira nilai untuk setiap kumpulan dan mencipta lajur baharu bernama t.
Untuk menambah lajur saiz menggunakan .transform( ), kita boleh melakukan perkara berikut:
g['size'] = df.groupby('c')['type'].transform('size')
.transform('size') menggunakan fungsi saiz untuk setiap kumpulan, yang mengembalikan saiz setiap kumpulan. Siri yang terhasil diselaraskan dengan indeks rangka data asal, membolehkan kami menambahkannya sebagai lajur baharu pada g.
Output akan menjadi bingkai data dengan lajur tambahan bernama saiz:
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
Menggunakan .transform() menyediakan cara yang lebih ringkas dan mudah untuk menambah lajur kembali ke kerangka data asal daripada pengagregatan kumpulan.
Atas ialah kandungan terperinci Bagaimana untuk Menambah Lajur Menggunakan Pandas Transform dalam GroupBy DataFrames?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!