diff --git a/xarray/core/dataset.py b/xarray/core/dataset.py index 3ca222b1965..9c2c2f60db1 100644 --- a/xarray/core/dataset.py +++ b/xarray/core/dataset.py @@ -5433,7 +5433,7 @@ def _unstack_once( if name not in index_vars: if dim in var.dims: if isinstance(fill_value, Mapping): - fill_value_ = fill_value[name] + fill_value_ = fill_value.get(name, xrdtypes.NA) else: fill_value_ = fill_value diff --git a/xarray/tests/test_dataset.py b/xarray/tests/test_dataset.py index 630bfea46c5..e677430dfbf 100644 --- a/xarray/tests/test_dataset.py +++ b/xarray/tests/test_dataset.py @@ -4150,6 +4150,10 @@ def test_unstack_fill_value(self) -> None: expected3 = ds.unstack("index").fillna({"var": -1, "other_var": 1}).astype(int) assert_equal(actual3, expected3) + actual4 = ds.unstack("index", fill_value={"var": -1}) + expected4 = ds.unstack("index").fillna({"var": -1, "other_var": np.nan}) + assert_equal(actual4, expected4) + @requires_sparse def test_unstack_sparse(self) -> None: ds = xr.Dataset(