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
Lepaskan: 2024-12-08 05:53:10
asal
521 orang telah melayarinya

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

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

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

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!

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