只是好奇选项 (b) 是否比选项 (a) 更有效?乍一看,选项 (a) 的操作将比选项 (b) 多几倍。但我对df中的一百万行进行了一些模拟,选项 (b) 平均只快了一小部分。这是否意味着 Pandas 会自动对选项 (a) 中的所有标量操作进行分组?
(a)变量 a、b、c、d、e、f 都是标量。
df['val2'] = (a*b+c*d)*df['val1']*e/f
(二)
x = (a*b+c*d)*e/f
df['val2'] = df['val1']*x
是的,最好预先计算
x
。实际上重要的是运算符优先级和执行运算的顺序。假设
s
您的系列,运行时(a*b+c*d)*s*e/f
您将对整个系列执行两次乘法和一次除法。如果您预先计算或使用(a*b+c*d)*e/f*s
,则只有一个涉及系列的运算。例子:
设置:
在初始阶段
(a*b+c*d)*df['val1']*e/f
,操作的顺序或操作如下: