Aplicar várias funções a várias colunas groupby

odocs mostra como aplicar múltiplas funções em um objeto groupby por vez usando um dict com os nomes das colunas de saída como as chaves:

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

No entanto, isso só funciona em um objeto groupby da Série. E quando um dict é transmitido de forma semelhante para um groupby DataFrame, ele espera que as chaves sejam os nomes das colunas às quais a função será aplicada.

O que eu quero fazer é aplicar várias funções a várias colunas (mas certas colunas serão operadas várias vezes). Além disso,algumas funções dependerão de outras colunas no objeto groupby (como funções sumif). Minha solução atual é ir coluna por coluna e fazer algo como o código acima, usando lambdas para funções que dependem de outras linhas. Mas isso está demorando muito (acho que demora muito para percorrer um objeto groupby). Eu terei que mudá-lo de modo que eu percorra todo o objeto groupby em uma única corrida, mas eu estou querendo saber se há um caminho embutido nos pandas para fazer isso de forma um tanto limpa.

Por exemplo, eu tentei algo como

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(), ...)

mas como esperado eu recebo um KeyError (já que as chaves tem que ser uma coluna seagg é chamado de um DataFrame).

Existe alguma maneira embutida de fazer o que eu gostaria de fazer, ou uma possibilidade que essa funcionalidade possa ser adicionada, ou eu só precisarei fazer uma iteração através do groupby manualmente?

obrigado

questionAnswers(4)

yourAnswerToTheQuestion