Só por curiosidade, se a opção (b) é mais eficiente que a opção (a)? À primeira vista, a opção (a) terá várias vezes mais operações que a opção (b). Mas eu fiz algumas simulações para um milhão de linhas em df , a opção (b) é apenas uma fração mais rápida em média. Isso significa que o Pandas agrupará todas as operações escalares na opção (a) automaticamente?
(a) As variáveis a, b, c, d, e, f são todas escalares.
df['val2'] = (a*b+c*d)*df['val1']*e/f
(b)
x = (a*b+c*d)*e/f
df['val2'] = df['val1']*x
Sim, é melhor pré-computar
x
. Na verdade, o que importa é a precedência do operador e a ordem em que as operações são realizadas.Assumindo
s
sua Series, quando você executa,(a*b+c*d)*s*e/f
você realiza duas multiplicações e uma divisão da Series completa. Se você pré-calcular ou usar(a*b+c*d)*e/f*s
, então há apenas uma operação envolvendo a Series.Exemplo:
Configurar:
Na inicial
(a*b+c*d)*df['val1']*e/f
, a ordem das operações é: