Czy istnieje sposób napisania funkcji agregacji, która jest używana w metodzie DataFrame.agg
, która miałaby dostęp do więcej niż jednej kolumny danych, które są agregowane? Typowe przypadki zastosowania to średnia ważona ważona odchyłka standardowa.Funkcja agregacji Pandas DataFrame przy użyciu wielu kolumn
Chciałbym móc napisać coś podobnego
def wAvg(c, w):
return ((c * w).sum()/w.sum())
df = DataFrame(....) # df has columns c and w, i want weighted average
# of c using w as weight.
df.aggregate ({"c": wAvg}) # and somehow tell it to use w column as weights ...
Skuteczniejsze może być podzielenie tego na kilka operacji w następujący sposób: (1) utworzyć kolumnę wag, (2) znormalizować obserwacje według ich wag, (3) obliczyć zgrupowaną sumę ważonych obserwacji i zgrupować suma wag, (4) znormalizować ważoną sumę obserwacji przez sumę wag. – kalu
Co jeśli chcemy obliczyć wavg z wielu zmiennych (kolumn), np. wszystko oprócz df ["wag"]? – CPBL
@Wers, czy jest jakiś sposób, aby zrobić to z 'agg()' i 'lambda' zbudowany wokół' np.average (... weights = ...) 'lub dowolnego nowego natywnego wsparcia w pandach dla ważonych znaczy od kiedy ten post pojawił się po raz pierwszy? –