<a id="howdoi"></a>

# How do I …

| How do I…                                                                           | Solution                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|-------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| add a DataArray to my dataset as a new variable                                     | `my_dataset[varname] = my_dataArray` or [`Dataset.assign()`](../generated/xarray.Dataset.assign.html.md#xarray.Dataset.assign) (see also [Dictionary like methods](../user-guide/data-structures.html.md#dictionary-like-methods))                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| add variables from other datasets to my dataset                                     | [`Dataset.merge()`](../generated/xarray.Dataset.merge.html.md#xarray.Dataset.merge)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| add a new dimension and/or coordinate                                               | [`DataArray.expand_dims()`](../generated/xarray.DataArray.expand_dims.html.md#xarray.DataArray.expand_dims), [`Dataset.expand_dims()`](../generated/xarray.Dataset.expand_dims.html.md#xarray.Dataset.expand_dims)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| add a new coordinate variable                                                       | [`DataArray.assign_coords()`](../generated/xarray.DataArray.assign_coords.html.md#xarray.DataArray.assign_coords)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| change a data variable to a coordinate variable                                     | [`Dataset.set_coords()`](../generated/xarray.Dataset.set_coords.html.md#xarray.Dataset.set_coords)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| change the order of dimensions                                                      | [`DataArray.transpose()`](../generated/xarray.DataArray.transpose.html.md#xarray.DataArray.transpose), [`Dataset.transpose()`](../generated/xarray.Dataset.transpose.html.md#xarray.Dataset.transpose)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| reshape dimensions                                                                  | [`DataArray.stack()`](../generated/xarray.DataArray.stack.html.md#xarray.DataArray.stack), [`Dataset.stack()`](../generated/xarray.Dataset.stack.html.md#xarray.Dataset.stack), `Dataset.coarsen.construct()`, `DataArray.coarsen.construct()`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| remove a variable from my object                                                    | [`Dataset.drop_vars()`](../generated/xarray.Dataset.drop_vars.html.md#xarray.Dataset.drop_vars), [`DataArray.drop_vars()`](../generated/xarray.DataArray.drop_vars.html.md#xarray.DataArray.drop_vars)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| remove dimensions of length 1 or 0                                                  | [`DataArray.squeeze()`](../generated/xarray.DataArray.squeeze.html.md#xarray.DataArray.squeeze), [`Dataset.squeeze()`](../generated/xarray.Dataset.squeeze.html.md#xarray.Dataset.squeeze)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| remove all variables with a particular dimension                                    | [`Dataset.drop_dims()`](../generated/xarray.Dataset.drop_dims.html.md#xarray.Dataset.drop_dims)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| convert non-dimension coordinates to data variables or remove them                  | [`DataArray.reset_coords()`](../generated/xarray.DataArray.reset_coords.html.md#xarray.DataArray.reset_coords), [`Dataset.reset_coords()`](../generated/xarray.Dataset.reset_coords.html.md#xarray.Dataset.reset_coords)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| rename a variable, dimension or coordinate                                          | [`Dataset.rename()`](../generated/xarray.Dataset.rename.html.md#xarray.Dataset.rename), [`DataArray.rename()`](../generated/xarray.DataArray.rename.html.md#xarray.DataArray.rename), [`Dataset.rename_vars()`](../generated/xarray.Dataset.rename_vars.html.md#xarray.Dataset.rename_vars), [`Dataset.rename_dims()`](../generated/xarray.Dataset.rename_dims.html.md#xarray.Dataset.rename_dims),                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| convert a DataArray to Dataset or vice versa                                        | [`DataArray.to_dataset()`](../generated/xarray.DataArray.to_dataset.html.md#xarray.DataArray.to_dataset), [`Dataset.to_dataarray()`](../generated/xarray.Dataset.to_dataarray.html.md#xarray.Dataset.to_dataarray), [`Dataset.to_stacked_array()`](../generated/xarray.Dataset.to_stacked_array.html.md#xarray.Dataset.to_stacked_array), [`DataArray.to_unstacked_dataset()`](../generated/xarray.DataArray.to_unstacked_dataset.html.md#xarray.DataArray.to_unstacked_dataset)                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| extract variables that have certain attributes                                      | [`Dataset.filter_by_attrs()`](../generated/xarray.Dataset.filter_by_attrs.html.md#xarray.Dataset.filter_by_attrs)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| extract the underlying array (e.g. NumPy or Dask arrays)                            | [`DataArray.data`](../generated/xarray.DataArray.data.html.md#xarray.DataArray.data)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| convert to and extract the underlying NumPy array                                   | [`DataArray.to_numpy`](../generated/xarray.DataArray.to_numpy.html.md#xarray.DataArray.to_numpy)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| convert to a pandas DataFrame                                                       | [`Dataset.to_dataframe`](../generated/xarray.Dataset.to_dataframe.html.md#xarray.Dataset.to_dataframe)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| sort values                                                                         | [`Dataset.sortby`](../generated/xarray.Dataset.sortby.html.md#xarray.Dataset.sortby)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| find out if my xarray object is wrapping a Dask Array                               | [`dask.is_dask_collection()`](https://docs.dask.org/en/latest/api.html#dask.is_dask_collection)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| know how much memory my object requires                                             | [`DataArray.nbytes`](../generated/xarray.DataArray.nbytes.html.md#xarray.DataArray.nbytes), [`Dataset.nbytes`](../generated/xarray.Dataset.nbytes.html.md#xarray.Dataset.nbytes)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| Get axis number for a dimension                                                     | [`DataArray.get_axis_num()`](../generated/xarray.DataArray.get_axis_num.html.md#xarray.DataArray.get_axis_num)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| convert a possibly irregularly sampled timeseries to a regularly sampled timeseries | [`DataArray.resample()`](../generated/xarray.DataArray.resample.html.md#xarray.DataArray.resample), [`Dataset.resample()`](../generated/xarray.Dataset.resample.html.md#xarray.Dataset.resample) (see [Resampling and grouped operations](../user-guide/time-series.html.md#resampling) for more)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| apply a function on all data variables in a Dataset                                 | [`Dataset.map()`](../generated/xarray.Dataset.map.html.md#xarray.Dataset.map)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| write xarray objects with complex values to a netCDF file                           | [`Dataset.to_netcdf()`](../generated/xarray.Dataset.to_netcdf.html.md#xarray.Dataset.to_netcdf), [`DataArray.to_netcdf()`](../generated/xarray.DataArray.to_netcdf.html.md#xarray.DataArray.to_netcdf) specifying `engine="h5netcdf"` or [`Dataset.to_netcdf()`](../generated/xarray.Dataset.to_netcdf.html.md#xarray.Dataset.to_netcdf), [`DataArray.to_netcdf()`](../generated/xarray.DataArray.to_netcdf.html.md#xarray.DataArray.to_netcdf) specifying `engine="netCDF4", auto_complex=True`                                                                                                                                                                                                                                                                                                                                                                                                        |
| make xarray objects look like other xarray objects                                  | [`ones_like()`](../generated/xarray.ones_like.html.md#xarray.ones_like), [`zeros_like()`](../generated/xarray.zeros_like.html.md#xarray.zeros_like), [`full_like()`](../generated/xarray.full_like.html.md#xarray.full_like), [`Dataset.reindex_like()`](../generated/xarray.Dataset.reindex_like.html.md#xarray.Dataset.reindex_like), [`Dataset.interp_like()`](../generated/xarray.Dataset.interp_like.html.md#xarray.Dataset.interp_like), [`Dataset.broadcast_like()`](../generated/xarray.Dataset.broadcast_like.html.md#xarray.Dataset.broadcast_like), [`DataArray.reindex_like()`](../generated/xarray.DataArray.reindex_like.html.md#xarray.DataArray.reindex_like), [`DataArray.interp_like()`](../generated/xarray.DataArray.interp_like.html.md#xarray.DataArray.interp_like), [`DataArray.broadcast_like()`](../generated/xarray.DataArray.broadcast_like.html.md#xarray.DataArray.broadcast_like) |
| Make sure my datasets have values at the same coordinate locations                  | `xr.align(dataset_1, dataset_2, join="exact")`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| replace NaNs with other values                                                      | [`Dataset.fillna()`](../generated/xarray.Dataset.fillna.html.md#xarray.Dataset.fillna), [`Dataset.ffill()`](../generated/xarray.Dataset.ffill.html.md#xarray.Dataset.ffill), [`Dataset.bfill()`](../generated/xarray.Dataset.bfill.html.md#xarray.Dataset.bfill), [`Dataset.interpolate_na()`](../generated/xarray.Dataset.interpolate_na.html.md#xarray.Dataset.interpolate_na), [`DataArray.fillna()`](../generated/xarray.DataArray.fillna.html.md#xarray.DataArray.fillna), [`DataArray.ffill()`](../generated/xarray.DataArray.ffill.html.md#xarray.DataArray.ffill), [`DataArray.bfill()`](../generated/xarray.DataArray.bfill.html.md#xarray.DataArray.bfill), [`DataArray.interpolate_na()`](../generated/xarray.DataArray.interpolate_na.html.md#xarray.DataArray.interpolate_na)                                                                                                              |
| extract the year, month, day or similar from a DataArray of time values             | `obj.dt.month` for example where `obj` is a [`DataArray`](../generated/xarray.DataArray.html.md#xarray.DataArray) containing `datetime64` or `cftime` values. See [Datetime components](../user-guide/time-series.html.md#dt-accessor) for more.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| round off time values to a specified frequency                                      | `obj.dt.ceil`, `obj.dt.floor`, `obj.dt.round`. See [Datetime components](../user-guide/time-series.html.md#dt-accessor) for more.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| make a mask that is `True` where an object contains any of the values in an array   | [`Dataset.isin()`](../generated/xarray.Dataset.isin.html.md#xarray.Dataset.isin), [`DataArray.isin()`](../generated/xarray.DataArray.isin.html.md#xarray.DataArray.isin)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| Index using a boolean mask                                                          | [`Dataset.query()`](../generated/xarray.Dataset.query.html.md#xarray.Dataset.query), [`DataArray.query()`](../generated/xarray.DataArray.query.html.md#xarray.DataArray.query), [`Dataset.where()`](../generated/xarray.Dataset.where.html.md#xarray.Dataset.where), [`DataArray.where()`](../generated/xarray.DataArray.where.html.md#xarray.DataArray.where)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| preserve `attrs` during (most) xarray operations                                    | `xr.set_options(keep_attrs=True)`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
