code: def process(self):
          
          # Short cut
          if self._all_expressions_evaluated():
              if self.drop:
                  # Drop extra columns. They do not correspond to
                  # any expressions.
                  columns = [expr.column for expr in self.expressions]
                  self.data = self.data.loc[:, columns]
              return self.data
  
          # group_by
          # evaluate expressions
          # combine columns
          # concat evalutated group data and clean up index and group
          gdfs = self._get_group_dataframes()
          egdfs = self._evaluate_expressions(gdfs)
          edata = self._concat(egdfs)
          return edata
docs: Run the expressions
  
          Returns
          -------
          out : pandas.DataFrame
              Resulting data