¿Es posible calcular directamente el producto (o, por ejemplo, suma) de dos columnas sin usarfunciones GroupBy en pandas Python como SUM (col_1 * col_2), promedio ponderado etc
grouped.apply(lambda x: (x.a*x.b).sum()
Es mucho (menos de la mitad del tiempo en mi máquina) más rápido usar
df['helper'] = df.a*df.b
grouped= df.groupby(something)
grouped['helper'].sum()
df.drop('helper', axis=1)
pero no me gusta mucho tener que hacer esto. Por ejemplo, es útil calcular el promedio ponderado por grupo. Aquí el enfoque lambda sería
grouped.apply(lambda x: (x.a*x.b).sum()/(df.b).sum())
y de nuevo es mucho más lento que dividir el asistente por b.sum().
Esto funciona, por supuesto. Pero sospecho que primero todo el vector C * D está construido en la memoria, luego se agrupa y luego se suma. No tendría que hacer esto si pudiera caminar de manera eficiente por las filas, sumando c_i * d_i (o solo construyendo C * D en grupos y luego sumarlos mientras caminaba por los grupos). –