Skip to content

Commit ec6a25b

Browse files
committed
Automatically chooses eval engine based on whether numexpr is installed
Fixes pandas-dev#12008
1 parent ed3d145 commit ec6a25b

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

pandas/computation/eval.py

+11-2
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ def _check_for_locals(expr, stack_level, parser):
131131
raise SyntaxError(msg)
132132

133133

134-
def eval(expr, parser='pandas', engine='numexpr', truediv=True,
134+
def eval(expr, parser='pandas', engine=None, truediv=True,
135135
local_dict=None, global_dict=None, resolvers=(), level=0,
136136
target=None, inplace=None):
137137
"""Evaluate a Python expression as a string using various backends.
@@ -160,7 +160,7 @@ def eval(expr, parser='pandas', engine='numexpr', truediv=True,
160160
``'python'`` parser to retain strict Python semantics. See the
161161
:ref:`enhancing performance <enhancingperf.eval>` documentation for
162162
more details.
163-
engine : string, default 'numexpr', {'python', 'numexpr'}
163+
engine : string, default None, {'python', 'numexpr'}
164164
165165
The engine used to evaluate the expression. Supported engines are
166166
@@ -172,6 +172,9 @@ def eval(expr, parser='pandas', engine='numexpr', truediv=True,
172172
173173
More backends may be available in the future.
174174
175+
If set to None (the default) then uses ``'numexpr'`` if available, otherwise
176+
uses ``'python'``.
177+
175178
truediv : bool, optional
176179
Whether to use true division, like in Python >= 3
177180
local_dict : dict or None, optional
@@ -227,6 +230,12 @@ def eval(expr, parser='pandas', engine='numexpr', truediv=True,
227230
raise ValueError("multi-line expressions are only valid in the "
228231
"context of data, use DataFrame.eval")
229232

233+
if engine is None:
234+
if _NUMEXPR_INSTALLED:
235+
engine = 'numexpr'
236+
else:
237+
engine = 'python'
238+
230239
first_expr = True
231240
for expr in exprs:
232241
expr = _convert_expression(expr)

0 commit comments

Comments
 (0)