# xarray.Dataset.unstack

#### Dataset.unstack(dim=None, \*, fill_value=<NA>, sparse=False)[[source]](https://github.com/pydata/xarray/blob/main/xarray/core/dataset.py#L5662-L5771)

Unstack existing dimensions corresponding to MultiIndexes into new dimensions.

New dimensions will be added at the end.

* **Parameters:**
  * **dim** ([`str`](https://docs.python.org/3/builtins/stdtypes.html#str), `Iterable` of `Hashable` or [`None`](https://docs.python.org/3/builtins/constants.html#None), *optional*) – Dimension(s) over which to unstack. By default unstacks all
    MultiIndexes.
  * **fill_value** ([scalar](../user-guide/terminology.html.md#term-scalar) or [dict-like](https://docs.python.org/3/glossary.html#term-mapping), *default*: `nan`) – value to be filled. If a dict-like, maps variable names to
    fill values. If not provided or if the dict-like does not
    contain all variables, the dtype’s NA value will be used.
  * **sparse** ([`bool`](https://docs.python.org/3/builtins/functions.html#bool), *default*: [`False`](https://docs.python.org/3/builtins/constants.html#False)) – use sparse-array if True
* **Returns:**
  **unstacked** ([`Dataset`](xarray.Dataset.html.md#xarray.Dataset)) – Dataset with unstacked data.

#### SEE ALSO
[`Dataset.stack`](xarray.Dataset.stack.html.md#xarray.Dataset.stack)

### Notes

The order of the new dimension coordinates follows the levels of the
`MultiIndex`. A `MultiIndex` created by pandas (e.g. when converting
a `pd.DataFrame` or `pd.Series` with a `MultiIndex`) usually has
sorted levels, so the resulting coordinates will be sorted. A
`MultiIndex` created by
[`Dataset.stack()`](xarray.Dataset.stack.html.md#xarray.Dataset.stack) preserves the original order. Use
[`Dataset.sel()`](xarray.Dataset.sel.html.md#xarray.Dataset.sel) after unstacking to select a specific order if
needed.
