首页 > 解决方案 > 更快地评估数据帧的数学表达式

问题描述

我正在使用 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

这适用于小型数据集(在更短的时间内大约 20k 条记录),但是当数据集大小很大时,大约 100 万条记录 - 它需要更长的时间来完成计算。有没有其他方法可以完成这个过程。

提前致谢。

标签: pythondataframesympyevaluate

解决方案


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


推荐阅读