Skip to content

Commit c604ee1

Browse files
authored
reindex: fix missing variable metadata (#6389)
1 parent 511d36c commit c604ee1

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

xarray/core/dataset.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2545,6 +2545,13 @@ def _reindex_callback(
25452545
new_variables = variables.copy()
25462546
new_indexes = indexes.copy()
25472547

2548+
# re-assign variable metadata
2549+
for name, new_var in new_variables.items():
2550+
var = self._variables.get(name)
2551+
if var is not None:
2552+
new_var.attrs = var.attrs
2553+
new_var.encoding = var.encoding
2554+
25482555
# pass through indexes from excluded dimensions
25492556
# no extra check needed for multi-coordinate indexes, potential conflicts
25502557
# should already have been detected when aligning the indexes

xarray/tests/test_dataset.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1887,6 +1887,19 @@ def test_reindex(self):
18871887
actual = ds.reindex(x=[0, 1, 3], y=[0, 1])
18881888
assert_identical(expected, actual)
18891889

1890+
def test_reindex_attrs_encoding(self):
1891+
ds = Dataset(
1892+
{"data": ("x", [1, 2, 3])},
1893+
{"x": ("x", [0, 1, 2], {"foo": "bar"}, {"bar": "baz"})},
1894+
)
1895+
actual = ds.reindex(x=[0, 1])
1896+
expected = Dataset(
1897+
{"data": ("x", [1, 2])},
1898+
{"x": ("x", [0, 1], {"foo": "bar"}, {"bar": "baz"})},
1899+
)
1900+
assert_identical(actual, expected)
1901+
assert actual.x.encoding == expected.x.encoding
1902+
18901903
def test_reindex_warning(self):
18911904
data = create_test_data()
18921905

0 commit comments

Comments
 (0)