The docs menunjukkan bagaimana menerapkan beberapa fungsi pada objek groupby pada waktu menggunakan dict dengan nama kolom output sebagai kunci:
In [563]: grouped['D'].agg({'result1' : np.sum,
.....: 'result2' : np.mean})
.....:
Out[563]:
result2 result1
A
bar -0.579846 -1.739537
foo -0.280588 -1.402938
Namun, ini hanya berfungsi pada objek Series group oleh. Dan ketika sebuah dikt sama dilewatkan ke grup oleh DataFrame, itu mengharapkan kunci untuk menjadi nama kolom yang fungsi akan diterapkan.
Yang ingin saya lakukan adalah menerapkan beberapa fungsi ke beberapa kolom (tetapi kolom tertentu akan dioperasikan beberapa kali). Juga, beberapa fungsi akan tergantung pada kolom lain di objek groupby (seperti fungsi sumif). Solusi saya saat ini adalah pergi kolom demi kolom, dan melakukan sesuatu seperti kode di atas, menggunakan lambdas untuk fungsi yang bergantung pada baris lain. Tapi ini butuh waktu lama, (saya pikir butuh waktu lama untuk beralih melalui objek grup). Saya harus mengubahnya sehingga saya mengulangi seluruh objek grup dengan sekali jalan, tapi saya ingin tahu apakah ada cara panda untuk melakukan ini dengan agak bersih.
Misalnya, saya sudah mencoba sesuatu seperti
grouped.agg({'C_sum' : lambda x: x['C'].sum(),
'C_std': lambda x: x['C'].std(),
'D_sum' : lambda x: x['D'].sum()},
'D_sumifC3': lambda x: x['D'][x['C'] == 3].sum(), ...)
tapi seperti yang diharapkan saya mendapatkan KeyError (karena kunci harus berupa kolom jika agg
dipanggil dari DataFrame).
Apakah ada cara dibangun untuk melakukan apa yang ingin saya lakukan, atau kemungkinan bahwa fungsi ini dapat ditambahkan, atau apakah saya hanya perlu mengulang melalui grup secara manual?
Terima kasih