Применение нескольких функций к нескольким групповым столбцам
документы покажите, как применять несколько функций к объекту groupby одновременно, используя dict с именами выходных столбцов в качестве ключей:
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
Однако это работает только для объекта Seriesby. И когда dict аналогично передается в групповой DataFrame, он ожидает, что ключами будут имена столбцов, к которым будет применена функция.
Я хочу применить несколько функций к нескольким столбцам (но некоторые столбцы будут работать несколько раз). Также,некоторые функции будут зависеть от других столбцов в объекте groupby (например, функции сумф). Мое текущее решение состоит в том, чтобы переходить от столбца к столбцу и делать что-то вроде приведенного выше кода, используя лямбда-выражения для функций, которые зависят от других строк. Но это занимает много времени, (я думаю, что это занимает много времени, чтобы перебрать объект groupby). Мне придется изменить его, чтобы я перебрал весь объект groupby за один прогон, но мне интересно, есть ли встроенный способ в пандах, чтобы сделать это несколько чисто.
Например, я пробовал что-то вроде
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(), ...)
но, как и ожидалось, я получаю KeyError (поскольку ключи должны быть столбцом, еслиagg
вызывается из DataFrame).
Есть ли какой-нибудь встроенный способ сделать то, что я хотел бы сделать, или возможность добавления этой функциональности, или мне просто нужно будет перебирать группу вручную?
Спасибо