code: def evaluate(self, data, env):
          
          def n():
              """
              Return number of rows in groups
  
              This function is part of the public API
              """
              return len(data)
  
          if isinstance(self.stmt, str):
              # Add function n() that computes the
              # size of the group data to the inner namespace.
              if self._has_n_func:
                  namespace = dict(data, n=n)
              else:
                  namespace = data
              # Avoid obvious keywords e.g if a column
              # is named class
              if self.stmt not in KEYWORDS:
                  value = env.eval(
                      self.stmt,
                      source_name='Expression.evaluate',
                      inner_namespace=namespace)
              else:
                  value = namespace[self.stmt]
          elif callable(self.stmt):
              value = self.stmt(data)
          else:
              value = self.stmt
          return value
docs: Evaluate statement
  
          Parameters
          ----------
          data : pandas.DataFrame
              Data in whose namespace the statement will be
              evaluated. Typically, this is a group dataframe.
  
          Returns
          -------
          out : object
              Result of the evaluation.pandas.DataFrame