Python 为数据帧更快地计算数学表达式

Python 为数据帧更快地计算数学表达式,python,dataframe,sympy,evaluate,Python,Dataframe,Sympy,Evaluate,我使用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.appl

我使用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条记录),但当数据集大小巨大时,约有一百万条记录- 完成计算需要更长的时间。 有没有其他方法来完成这个过程


提前感谢。

您可以尝试使用
lambdify
将表达式转换为Python函数,而不是使用
subs
。请参阅文档

您可以尝试使用
lambdify
将表达式转换为Python函数,而不是使用
subs
。请参阅文档

,那么每行是否有不同的公式?你为什么要用Symphy?是的,没错。公式是动态的-dataframe将具有该公式所需的相关列。有多少个唯一的公式?想知道是否有一种方法可以在数据的不同子集上应用每种方法。目前公式的数量没有限制。这是一个有趣的问题。您有没有办法提供更具体的示例?喜欢更多的示例公式和/或公式是如何生成的?数据集的大小(数据帧的形状)有多大。等等。那么每行有不同的公式吗?你为什么要用Symphy?是的,没错。公式是动态的-dataframe将具有该公式所需的相关列。有多少个唯一的公式?想知道是否有一种方法可以在数据的不同子集上应用每种方法。目前公式的数量没有限制。这是一个有趣的问题。您有没有办法提供更具体的示例?喜欢更多的示例公式和/或公式是如何生成的?数据集的大小(数据帧的形状)有多大。等