pandas-0.25.0rc0 problem on Python-3.8: 'PandasExprVisitor' object has no attribute 'visit_Constant' · Issue #27261 · pandas-dev/pandas (original) (raw)

import pandas as pd
import numpy as np

idx = pd.date_range('2000', '2005', freq='d', closed='left')
datas = pd.DataFrame({'Color':  [ 'green' if x> 1 else 'red' for x in np.random.randn(len(idx))], 
         'Measure': np.random.randn(len(idx)), 'Year': idx.year},
          index=idx.date)
datas.query('Measure > 0').groupby(['Color','Year']).size().unstack()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-18-6c03ccdf9365> in <module>
      6          'Measure': np.random.randn(len(idx)), 'Year': idx.year},
      7           index=idx.date)
----> 8 datas.query('Measure > 0').groupby(['Color','Year']).size().unstack()

C:\WinP\bd38\bu\WPy32-3800b2\python-3.8.0b2\lib\site-packages\pandas\core\frame.py in query(self, expr, inplace, **kwargs)
   3190         kwargs["level"] = kwargs.pop("level", 0) + 1
   3191         kwargs["target"] = None
-> 3192         res = self.eval(expr, **kwargs)
   3193 
   3194         try:

C:\WinP\bd38\bu\WPy32-3800b2\python-3.8.0b2\lib\site-packages\pandas\core\frame.py in eval(self, expr, inplace, **kwargs)
   3306             kwargs["target"] = self
   3307         kwargs["resolvers"] = kwargs.get("resolvers", ()) + tuple(resolvers)
-> 3308         return _eval(expr, inplace=inplace, **kwargs)
   3309 
   3310     def select_dtypes(self, include=None, exclude=None):

C:\WinP\bd38\bu\WPy32-3800b2\python-3.8.0b2\lib\site-packages\pandas\core\computation\eval.py in eval(expr, parser, engine, truediv, local_dict, global_dict, resolvers, level, target, inplace)
    320         )
    321 
--> 322         parsed_expr = Expr(expr, engine=engine, parser=parser, env=env, truediv=truediv)
    323 
    324         # construct the engine and evaluate the parsed expression

C:\WinP\bd38\bu\WPy32-3800b2\python-3.8.0b2\lib\site-packages\pandas\core\computation\expr.py in __init__(self, expr, engine, parser, env, truediv, level)
    825         self.env.scope["truediv"] = truediv
    826         self._visitor = _parsers[parser](self.env, self.engine, self.parser)
--> 827         self.terms = self.parse()
    828 
    829     @property

C:\WinP\bd38\bu\WPy32-3800b2\python-3.8.0b2\lib\site-packages\pandas\core\computation\expr.py in parse(self)
    842     def parse(self):
    843         """Parse an expression"""
--> 844         return self._visitor.visit(self.expr)
    845 
    846     @property

C:\WinP\bd38\bu\WPy32-3800b2\python-3.8.0b2\lib\site-packages\pandas\core\computation\expr.py in visit(self, node, **kwargs)
    439         method = "visit_" + node.__class__.__name__
    440         visitor = getattr(self, method)
--> 441         return visitor(node, **kwargs)
    442 
    443     def visit_Module(self, node, **kwargs):

C:\WinP\bd38\bu\WPy32-3800b2\python-3.8.0b2\lib\site-packages\pandas\core\computation\expr.py in visit_Module(self, node, **kwargs)
    445             raise SyntaxError("only a single expression is allowed")
    446         expr = node.body[0]
--> 447         return self.visit(expr, **kwargs)
    448 
    449     def visit_Expr(self, node, **kwargs):

C:\WinP\bd38\bu\WPy32-3800b2\python-3.8.0b2\lib\site-packages\pandas\core\computation\expr.py in visit(self, node, **kwargs)
    439         method = "visit_" + node.__class__.__name__
    440         visitor = getattr(self, method)
--> 441         return visitor(node, **kwargs)
    442 
    443     def visit_Module(self, node, **kwargs):

C:\WinP\bd38\bu\WPy32-3800b2\python-3.8.0b2\lib\site-packages\pandas\core\computation\expr.py in visit_Expr(self, node, **kwargs)
    448 
    449     def visit_Expr(self, node, **kwargs):
--> 450         return self.visit(node.value, **kwargs)
    451 
    452     def _rewrite_membership_op(self, node, left, right):

C:\WinP\bd38\bu\WPy32-3800b2\python-3.8.0b2\lib\site-packages\pandas\core\computation\expr.py in visit(self, node, **kwargs)
    439         method = "visit_" + node.__class__.__name__
    440         visitor = getattr(self, method)
--> 441         return visitor(node, **kwargs)
    442 
    443     def visit_Module(self, node, **kwargs):

C:\WinP\bd38\bu\WPy32-3800b2\python-3.8.0b2\lib\site-packages\pandas\core\computation\expr.py in visit_Compare(self, node, **kwargs)
    742             op = self.translate_In(ops[0])
    743             binop = ast.BinOp(op=op, left=node.left, right=comps[0])
--> 744             return self.visit(binop)
    745 
    746         # recursive case: we have a chained comparison, a CMP b CMP c, etc.

C:\WinP\bd38\bu\WPy32-3800b2\python-3.8.0b2\lib\site-packages\pandas\core\computation\expr.py in visit(self, node, **kwargs)
    439         method = "visit_" + node.__class__.__name__
    440         visitor = getattr(self, method)
--> 441         return visitor(node, **kwargs)
    442 
    443     def visit_Module(self, node, **kwargs):

C:\WinP\bd38\bu\WPy32-3800b2\python-3.8.0b2\lib\site-packages\pandas\core\computation\expr.py in visit_BinOp(self, node, **kwargs)
    561 
    562     def visit_BinOp(self, node, **kwargs):
--> 563         op, op_class, left, right = self._maybe_transform_eq_ne(node)
    564         left, right = self._maybe_downcast_constants(left, right)
    565         return self._maybe_evaluate_binop(op, op_class, left, right)

C:\WinP\bd38\bu\WPy32-3800b2\python-3.8.0b2\lib\site-packages\pandas\core\computation\expr.py in _maybe_transform_eq_ne(self, node, left, right)
    482             left = self.visit(node.left, side="left")
    483         if right is None:
--> 484             right = self.visit(node.right, side="right")
    485         op, op_class, left, right = self._rewrite_membership_op(node, left, right)
    486         return op, op_class, left, right

C:\WinP\bd38\bu\WPy32-3800b2\python-3.8.0b2\lib\site-packages\pandas\core\computation\expr.py in visit(self, node, **kwargs)
    438 
    439         method = "visit_" + node.__class__.__name__
--> 440         visitor = getattr(self, method)
    441         return visitor(node, **kwargs)
    442 

AttributeError: 'PandasExprVisitor' object has no attribute 'visit_Constant'