我正在使用sympy sympify函数来评估数据框中存在的数据的公式(动态)。
import sympy as sy
def evaluate_function(formula,dataframe):
gfg_exp = sy.sympify(formula)
dataframe_dict=dataframe.to_dict()
gfg_exp = gfg_exp.subs(dataframe_dict)
return gfg_exp
df['result']=df.apply(lambda row:evaluate_function(formula=condition_to_check,dataframe=row),axis=1)
sample datadata is like:
A B
200 400
320 100
formula: A/B > 1
这适用于小型数据集(更少的时间约2万条记录,但是当数据集规模巨大时,大约有100万条记录-它需要更长的时间才能完成计算。还有其他方法可以执行此过程。
提前感谢。
[您可以尝试使用lambdify
将表达式转换为Python函数,而不是使用subs
。请参阅文档https://docs.sympy.org/latest/modules/utilities/lambdify.html#sympy.utilities.lambdify.lambdify