code: def apply(self, func, args=(), **kwargs):
          
          kwargs.pop('shortcut', None)  # ignore shortcut if set (for now)
          applied = (func(ds, *args, **kwargs) for ds in self._iter_grouped())
          return self._combine(applied)
docs: Apply a function over each Dataset in the group and concatenate them
          together into a new Dataset.
  
          `func` is called like `func(ds, *args, **kwargs)` for each dataset `ds`
          in this group.
  
          Apply uses heuristics (like `pandas.GroupBy.apply`) to figure out how
          to stack together the datasets. The rule is:
          1. If the dimension along which the group coordinate is defined is
             still in the first grouped item after applying `func`, then stack
             over this dimension.
          2. Otherwise, stack over the new dimension given by name of this
             grouping (the argument to the `groupby` function).
  
          Parameters
          ----------
          func : function
              Callable to apply to each sub-dataset.
          args : tuple, optional
              Positional arguments to pass to `func`.
          **kwargs
              Used to call `func(ds, **kwargs)` for each sub-dataset `ar`.
  
          Returns
          -------
          applied : Dataset or DataArray
              The result of splitting, applying and combining this dataset.