è possibile calcolare direttamente il prodotto (o per esempio somma) di due colonne senza utilizzarefunzioni GroupBy in pitone Pandas come SUM (col_1 * col_2), media ponderata ecc
grouped.apply(lambda x: (x.a*x.b).sum()
È molto (meno della metà del tempo sulla mia macchina) più veloce da usare
df['helper'] = df.a*df.b
grouped= df.groupby(something)
grouped['helper'].sum()
df.drop('helper', axis=1)
Ma non mi piace dover fare questo. È utile ad esempio per calcolare la media ponderata per gruppo. Qui l'approccio lambda sarebbe
grouped.apply(lambda x: (x.a*x.b).sum()/(df.b).sum())
e di nuovo è molto più lento di dividere l'helper per b.sum().
Questo funziona naturalmente. Ma sospetto che prima l'intero vettore C * D sia costruito in memoria, quindi viene raggruppato e quindi sommato. Non avrei dovuto farlo se riuscissi a camminare in modo efficiente tra le righe, sommando il c_i * d_i (o solo costruendo C * D per gruppo e poi sommandoli mentre si cammina tra i gruppi). –