@@ -428,7 +428,6 @@ def wrapper(obj: Union[DataArray, Dataset], key: str):
428428 "dim" : (_get_dims ,),
429429 "dims" : (_get_dims ,), # transpose
430430 "drop_dims" : (_get_dims ,), # drop_dims
431- "dimensions" : (_get_dims ,), # stack
432431 "dims_dict" : (_get_dims ,), # swap_dims, rename_dims
433432 "shifts" : (_get_dims ,), # shift, roll
434433 "pad_width" : (_get_dims ,), # shift, roll
@@ -1435,6 +1434,23 @@ def drop(self, *args, **kwargs):
14351434 "Please use .cf.drop_vars or .cf.drop_sel as appropriate."
14361435 )
14371436
1437+ def stack (self , dimensions = None , ** dimensions_kwargs ):
1438+ # stack needs to rewrite the _values_ of a dict
1439+ # our other machinery rewrites the _keys_ of a dict
1440+ # This seems somewhat rare, so do it explicitly for now
1441+
1442+ if dimensions is None :
1443+ dimensions = dimensions_kwargs
1444+ for key , values in dimensions .items ():
1445+ updates = [
1446+ apply_mapper (
1447+ (_single (_get_dims ),), self ._obj , v , error = True , default = [v ]
1448+ )
1449+ for v in values
1450+ ]
1451+ dimensions .update ({key : tuple (itertools .chain (* updates ))})
1452+ return self ._obj .stack (dimensions )
1453+
14381454
14391455@xr .register_dataset_accessor ("cf" )
14401456class CFDatasetAccessor (CFAccessor ):
0 commit comments