python - 更快地评估数据帧的数学表达式
问题描述
我正在使用 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 万条记录 - 它需要更长的时间来完成计算。有没有其他方法可以完成这个过程。
提前致谢。
解决方案
您可以尝试使用lambdify
将表达式转换为 Python 函数,而不是使用subs
. 请参阅文档https://docs.sympy.org/latest/modules/utilities/lambdify.html#sympy.utilities.lambdify.lambdify
推荐阅读
- python - 计算嵌套列表中的字符串
- jmeter - 如何在 http 请求采样器的正文中发送查询字符串?(发布请求)
- javascript - 如何使用指向新版本的 Webpacked JS 文件的 ASP.NET 管理发布?
- oracle - 单击按钮排序,如果再次按下,则顺序更改为 Oracle Forms 中的默认排序顺序
- asp.net-core - 如何在 ASP.NET Core GraphQL 中访问嵌套字段中的参数
- bash - 从命令行将元数据添加到 solr 中的 pdf
- django - 为什么 Django 不会渲染 pandas 中隐含的总和?
- python - 如何使用更新的值多次重复我的函数?
- rest - Spring MVC REST not null 约束不适用于缺少请求参数
- node.js - Node js无法连接到Redis Docker Centos 7