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()
所以你得到了一个可重用的向量化函数。
所以我有相当大的 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()
所以你得到了一个可重用的向量化函数。