Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Memohon Berbilang Fungsi pada Berbilang Lajur dalam Pandas GroupBy?

Bagaimana untuk Memohon Berbilang Fungsi pada Berbilang Lajur dalam Pandas GroupBy?

Barbara Streisand
Barbara Streisandasal
2024-12-08 05:53:10522semak imbas

How to Apply Multiple Functions to Multiple Columns in Pandas GroupBy?

Cara Menggunakan Berbilang Fungsi pada Berbilang Lajur Berkumpulan

Operasi kumpulan dalam Pandas membenarkan pengagregatan data berdasarkan lajur atau kekunci tertentu. Walau bagaimanapun, apabila bekerja dengan set data kompleks, anda mungkin perlu melakukan berbilang operasi pada lajur berbeza dalam data terkumpul.

Menggunakan Kamus untuk Siri Kumpulan-bys

Untuk objek kumpulan mengikut Siri, anda boleh menggunakan kamus untuk menentukan berbilang fungsi dan nama lajur output, seperti yang ditunjukkan di bawah:

grouped['D'].agg({'result1' : np.sum,
   .....:                   'result2' : np.mean})

Pendekatan ini, walau bagaimanapun, tidak berfungsi untuk kumpulan DataFrame mengikut objek, kerana ia menjangkakan kekunci kamus mewakili nama lajur untuk menggunakan fungsi.

Fungsi Tersuai dengan Guna

Untuk menangani had ini , anda boleh memanfaatkan kaedah guna, yang secara tersirat menghantar DataFrame kepada fungsi yang digunakan. Dengan mentakrifkan fungsi tersuai dan mengembalikan Siri atau Siri MultiIndex, anda boleh melakukan berbilang operasi pada berbilang lajur dalam setiap kumpulan:

Mengembalikan Siri:

def f(x):
    d = {}
    d['a_sum'] = x['a'].sum()
    d['a_max'] = x['a'].max()
    d['b_mean'] = x['b'].mean()
    d['c_d_prodsum'] = (x['c'] * x['d']).sum()
    return pd.Series(d, index=['a_sum', 'a_max', 'b_mean', 'c_d_prodsum'])

df.groupby('group').apply(f)

Mengembalikan Siri dengan MultiIndex:

def f_mi(x):
        d = []
        d.append(x['a'].sum())
        d.append(x['a'].max())
        d.append(x['b'].mean())
        d.append((x['c'] * x['d']).sum())
        return pd.Series(d, index=[['a', 'a', 'b', 'c_d'], 
                                   ['sum', 'max', 'mean', 'prodsum']])

df.groupby('group').apply(f_mi)

Pendekatan ini menyediakan cara yang fleksibel untuk melakukan pengagregatan kompleks pada data terkumpul, membenarkan berbilang operasi pada berbilang lajur dalam setiap kumpulan.

Atas ialah kandungan terperinci Bagaimana untuk Memohon Berbilang Fungsi pada Berbilang Lajur dalam Pandas GroupBy?. 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