🍾 Xarray is now 10 years old! 🎉

xarray.DataArray.to_unstacked_dataset

xarray.DataArray.to_unstacked_dataset#

DataArray.to_unstacked_dataset(dim, level=0)[source]#

Unstack DataArray expanding to Dataset along a given level of a stacked coordinate.

This is the inverse operation of Dataset.to_stacked_array.

Parameters:
  • dim (Hashable) – Name of existing dimension to unstack

  • level (int or Hashable, default: 0) – The MultiIndex level to expand to a dataset along. Can either be the integer index of the level or its name.

Returns:

unstacked (Dataset)

Examples

>>> arr = xr.DataArray(
...     np.arange(6).reshape(2, 3),
...     coords=[("x", ["a", "b"]), ("y", [0, 1, 2])],
... )
>>> data = xr.Dataset({"a": arr, "b": arr.isel(y=0)})
>>> data
<xarray.Dataset> Size: 96B
Dimensions:  (x: 2, y: 3)
Coordinates:
  * x        (x) <U1 8B 'a' 'b'
  * y        (y) int64 24B 0 1 2
Data variables:
    a        (x, y) int64 48B 0 1 2 3 4 5
    b        (x) int64 16B 0 3
>>> stacked = data.to_stacked_array("z", ["x"])
>>> stacked.indexes["z"]
MultiIndex([('a',   0),
            ('a',   1),
            ('a',   2),
            ('b', nan)],
           name='z')
>>> roundtripped = stacked.to_unstacked_dataset(dim="z")
>>> data.identical(roundtripped)
True