Zastosuj wiele funkcji do wielu kolumn grupowych

Thedocs pokaż, jak zastosować wiele funkcji na obiekcie grupowym naraz, używając dyktatu z nazwami kolumn wyjściowych jako kluczy:

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

Jednak działa to tylko w przypadku obiektu grupy Groupby. A gdy dykta zostanie przekazana podobnie do grupy przez DataFrame, oczekuje, że klucze będą nazwami kolumn, do których funkcja zostanie zastosowana.

To, co chcę zrobić, to zastosować wiele funkcji do kilku kolumn (ale niektóre kolumny będą obsługiwane wielokrotnie). Również,niektóre funkcje będą zależeć od innych kolumn w obiekcie Groupby (jak funkcje sumif). Moje obecne rozwiązanie polega na przechodzeniu kolumna po kolumnie i robieniu czegoś podobnego do powyższego kodu, używając lambd dla funkcji zależnych od innych wierszy. Ale to zajmuje dużo czasu (myślę, że iterowanie obiektu grupowego zajmuje dużo czasu). Będę musiał to zmienić, aby przejść przez cały obiekt grupowy w jednym przebiegu, ale zastanawiam się, czy w pandach jest wbudowany sposób, aby zrobić to trochę czysto.

Na przykład próbowałem czegoś takiego

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

ale zgodnie z oczekiwaniami otrzymuję błąd KeyError (ponieważ klucze muszą być kolumną, jeśliagg jest wywoływany z DataFrame).

Czy jest jakiś wbudowany sposób na zrobienie tego, co chcę zrobić, lub możliwość dodania tej funkcji, czy też po prostu muszę ręcznie przeglądać grupę?

Dzięki

questionAnswers(4)

yourAnswerToTheQuestion