为数据帧更快地评估数学表达式

问题描述 投票:1回答:1

我正在使用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万条记录-它需要更长的时间才能完成计算。还有其他方法可以执行此过程。

提前感谢。

python dataframe sympy evaluate
1个回答
0
投票

[您可以尝试使用lambdify将表达式转换为Python函数,而不是使用subs。请参阅文档https://docs.sympy.org/latest/modules/utilities/lambdify.html#sympy.utilities.lambdify.lambdify

© www.soinside.com 2019 - 2024. All rights reserved.