Skip to content

Commit ad17931

Browse files
committed
sel: propagate multi-index vars attrs/encoding
Related to pydata#1366
1 parent a6bce37 commit ad17931

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

xarray/core/dataset.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1178,8 +1178,16 @@ def _overwrite_indexes(
11781178
new_coord_names = self._coord_names.copy()
11791179
new_indexes = dict(self.xindexes)
11801180

1181+
for name, var in variables.items():
1182+
old_var = self._variables.get(name)
1183+
if old_var is not None:
1184+
# propagate attrs and encoding
1185+
# TODO: needs a test
1186+
var.attrs = {**old_var.attrs, **var.attrs}
1187+
var.encoding = {**old_var.encoding, **var.encoding}
1188+
new_variables[name] = var
1189+
11811190
for name in indexes:
1182-
new_variables[name] = variables[name]
11831191
new_indexes[name] = indexes[name]
11841192

11851193
for name in drop_variables:
@@ -2346,6 +2354,8 @@ def isel(
23462354
indexes.pop(var_name, None)
23472355
continue
23482356
if indexes and var_name in indexes:
2357+
# TODO benbovy - flexible indexes: this won't be always desirable
2358+
# (e.g., 1-d out-of-core coordinate, "meta"-index, etc.)
23492359
if var_value.ndim == 1:
23502360
indexes[var_name] = var_value._to_xindex()
23512361
else:

0 commit comments

Comments
 (0)