|
24 | 24 | from .coordinates import DatasetCoordinates, LevelCoordinatesSource, Indexes
|
25 | 25 | from .common import ImplementsDatasetReduce, BaseDataObject, is_datetime_like
|
26 | 26 | from .merge import (dataset_update_method, dataset_merge_method,
|
27 |
| - merge_data_and_coords) |
| 27 | + merge_data_and_coords, merge_variables) |
28 | 28 | from .utils import (Frozen, SortedKeysDict, maybe_wrap_array, hashable,
|
29 | 29 | decode_numpy_dict_values, ensure_us_time_resolution)
|
30 | 30 | from .variable import (Variable, as_variable, IndexVariable,
|
@@ -1135,17 +1135,11 @@ def isel(self, drop=False, **indexers):
|
1135 | 1135 | raise ValueError("dimensions %r do not exist" % invalid)
|
1136 | 1136 |
|
1137 | 1137 | # extract new coordinates from indexers
|
1138 |
| - variables = OrderedDict() |
1139 |
| - for k, v in iteritems(indexers): |
1140 |
| - if isinstance(v, DataArray): |
1141 |
| - for c, var in v.coords.items(): |
1142 |
| - if c in variables: |
1143 |
| - if not variables[c].equals(var.variable): |
1144 |
| - raise ValueError('Inconsistent coordinates : {0}' |
1145 |
| - ' and {1}'.format(variables[c], |
1146 |
| - var)) |
1147 |
| - else: |
1148 |
| - variables[c] = var.variable |
| 1138 | + variables = merge_variables([v._coords for _, v in |
| 1139 | + iteritems(indexers) |
| 1140 | + if isinstance(v, DataArray)], |
| 1141 | + compat='identical') |
| 1142 | + |
1149 | 1143 | coord_names = set(self._coord_names) | set(variables)
|
1150 | 1144 |
|
1151 | 1145 | # a tuple, e.g. (('x', ), [0, 1]), is converted to Variable
|
|
0 commit comments