code: def _process(self, obj, key=None):
          
          if isinstance(obj, Dataset) and obj.interface.gridded:
              return obj
          elif obj.ndims > 2:
              raise ValueError("Cannot aggregate more than two dimensions")
          elif len(obj.dimensions()) < 3:
              raise ValueError("Must have at two dimensions to aggregate over"
                               "and one value dimension to aggregate on.")
  
          dtype = 'dataframe' if pd else 'dictionary'
          obj = Dataset(obj, datatype=[dtype])
          xcoords, ycoords = self._get_coords(obj)
          return self._aggregate_dataset(obj, xcoords, ycoords)
docs: Generates a categorical 2D aggregate by inserting NaNs at all
          cross-product locations that do not already have a value assigned.
          Returns a 2D gridded Dataset object.