оцените математическое выражение быстрее для кадра данных - PullRequest
1 голос
/ 01 февраля 2020

Я использую функцию sympy sympify для оценки формулы (Dynami c) для данных, присутствующих в кадре данных.

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

Это работает для небольших наборов данных (около 20 000 записей за меньшее время), но когда размер набора данных огромен - около 1 миллиона записей - это займет больше времени, чтобы завершить вычисления. Есть ли другой способ сделать этот процесс.

Заранее спасибо.

1 Ответ

0 голосов
/ 03 февраля 2020

Вы можете попробовать использовать lambdify для преобразования вашего выражения в функцию Python вместо использования subs. См. Документацию https://docs.sympy.org/latest/modules/utilities/lambdify.html#sympy .utilities.lambdify.lambdify

...