Pandas 带函数的数据框行式公式

Pandas dataframe row-wise formula with function

所以我有相当大的 DataFrame,我根据其他列通过一些方程式创建了一个新列:

df['F'] = (params.a * params.b * df.A/1000 - param.C * (df.B + df.C - df.D) + param.D * df.E

而且它工作得很好。除了我想 在整个代码中重复此函数 ,所以我不想将其转换为可重用的函数,而不是容易出错的复制和粘贴。

所以我将它转换为 lambda:

def fun(r):
     return (params.a * params.b * r.A/1000 - param.C * (r.B + r.C - r.D) + param.D * r.E   
df['F'] = r.apply(funy,axis =1)

然而,现在 慢了 5 倍(1.2s vs 6s 10k 行)。

如果我想拥有简洁的功能并仍然受益于速度,我应该怎么做?

有什么问题:

def fun():
    return params.a * params.b * df.A/1000 - param.C * (df.B + df.C - df.D) + param.D * df.E

df['F'] = fun()

所以你得到了一个可重用的向量化函数。