Skip to content

ERR: better error reporting for missing numexpr #5969

Closed
@twiecki

Description

@twiecki

From the example at http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.query.html:

from numpy.random import randn
from pandas import DataFrame
df = DataFrame(randn(10, 2), columns=list('ab'))
df.query('a > b')

gives me:

---------------------------------------------------------------------------
NameResolutionError                       Traceback (most recent call last)
<ipython-input-19-47040e53b0e7> in <module>()
      2 from pandas import DataFrame
      3 df = DataFrame(randn(10, 2), columns=list('ab'))
----> 4 df.query('a > b')

/usr/local/lib/python2.7/dist-packages/pandas/core/frame.pyc in query(self, expr, **kwargs)
   1778                              "query expression")
   1779 
-> 1780         res = self.eval(expr, **kwargs)
   1781 
   1782         try:

/usr/local/lib/python2.7/dist-packages/pandas/core/frame.pyc in eval(self, expr, **kwargs)
   1829         kwargs['local_dict'] = _ensure_scope(resolvers=resolvers, **kwargs)
   1830         kwargs['target'] = self
-> 1831         return _eval(expr, **kwargs)
   1832 
   1833     def _slice(self, slobj, axis=0, raise_on_error=False, typ=None):

/usr/local/lib/python2.7/dist-packages/pandas/computation/eval.pyc in eval(expr, parser, engine, truediv, local_dict, global_dict, resolvers, level, target)
    206     eng = _engines[engine]
    207     eng_inst = eng(parsed_expr)
--> 208     ret = eng_inst.evaluate()
    209 
    210     # assign if needed

/usr/local/lib/python2.7/dist-packages/pandas/computation/engines.pyc in evaluate(self)
     48 
     49         # make sure no names in resolvers and locals/globals clash
---> 50         self.pre_evaluate()
     51         res = self._evaluate()
     52         return _reconstruct_object(self.result_type, res, self.aligned_axes,

/usr/local/lib/python2.7/dist-packages/pandas/computation/engines.pyc in pre_evaluate(self)
     31 
     32     def pre_evaluate(self):
---> 33         self.expr.check_name_clashes()
     34 
     35     def evaluate(self):

/usr/local/lib/python2.7/dist-packages/pandas/computation/expr.pyc in check_name_clashes(self)
    797         lcl_keys = frozenset(env.locals.keys()) & names
    798         gbl_keys = frozenset(env.globals.keys()) & names
--> 799         _check_disjoint_resolver_names(res_keys, lcl_keys, gbl_keys)
    800 
    801     def add_resolvers_to_locals(self):

/usr/local/lib/python2.7/dist-packages/pandas/computation/expr.pyc in _check_disjoint_resolver_names(resolver_keys, local_keys, global_keys)
     39     if res_locals:
     40         msg = "resolvers and locals overlap on names {0}".format(res_locals)
---> 41         raise NameResolutionError(msg)
     42 
     43     res_globals = list(com.intersection(resolver_keys, global_keys))

NameResolutionError: resolvers and locals overlap on names ['a']

This is with 0.13.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions