From 4c00c2b8b7fd70578e949e651ee216786a43e6d5 Mon Sep 17 00:00:00 2001 From: Lukas Riedel <34276446+peanutfun@users.noreply.github.com> Date: Fri, 7 Nov 2025 14:44:13 +0100 Subject: [PATCH 1/2] Use get method for fill_value in unstack_once --- xarray/core/dataset.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 80f358d7fec34c9aa4a6bc6df30f939c9956a67b Mon Sep 17 00:00:00 2001 From: Lukas Riedel Date: Mon, 10 Nov 2025 11:41:56 +0100 Subject: [PATCH 2/2] Add unit test for default fill_value in stack() --- xarray/tests/test_dataset.py | 4 ++++ 1 file changed, 4 insertions(+) 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(