Skip to content

Commit 11ba965

Browse files
committed
risky
1 parent c2a065d commit 11ba965

File tree

1 file changed

+27
-6
lines changed

1 file changed

+27
-6
lines changed

xarray/core/indexes.py

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1480,12 +1480,14 @@ def _id_index(self) -> dict[int, T_PandasOrXarrayIndex]:
14801480
@property
14811481
def _id_coord_names(self) -> dict[int, tuple[Hashable, ...]]:
14821482
if self.__id_coord_names is None:
1483-
id_coord_names: Mapping[int, list[Hashable]] = defaultdict(list)
1484-
for k, v in self._coord_name_id.items():
1485-
id_coord_names[v].append(k)
1486-
self.__id_coord_names = {k: tuple(v) for k, v in id_coord_names.items()}
1487-
1483+
self._create_id_coord_names()
14881484
return self.__id_coord_names
1485+
1486+
def _create_id_coord_names(self) -> None:
1487+
id_coord_names: Mapping[int, list[Hashable]] = defaultdict(list)
1488+
for k, v in self._coord_name_id.items():
1489+
id_coord_names[v].append(k)
1490+
self.__id_coord_names = {k: tuple(v) for k, v in id_coord_names.items()}
14891491

14901492
@property
14911493
def variables(self) -> Mapping[Hashable, Variable]:
@@ -1771,6 +1773,25 @@ def check_variables():
17711773

17721774
return not not_equal
17731775

1776+
def _apply_indexes_isel(
1777+
indexes: Indexes[Index],
1778+
args: Mapping[Any, Any],
1779+
):
1780+
new_indexes: dict[Hashable, Index] = {k: v for k, v in indexes.items()}
1781+
new_index_variables: dict[Hashable, Variable] = {}
1782+
# for index, index_vars in indexes.group_by_index():
1783+
for index in indexes._id_index.values():
1784+
# index = indexes._id_index[i]
1785+
index_dims = (index.index.name,)
1786+
index_args = {k: v for k, v in args.items() if k in index_dims}
1787+
if index_args:
1788+
new_index = index.isel(index_args)
1789+
if new_index is not None:
1790+
new_indexes.update({k: new_index for k in index_vars})
1791+
new_index_vars = new_index.create_variables(index_vars)
1792+
new_index_variables.update(new_index_vars)
1793+
1794+
return new_indexes, new_index_variables
17741795

17751796
def _apply_indexes(
17761797
indexes: Indexes[Index],
@@ -1800,7 +1821,7 @@ def isel_indexes(
18001821
indexes: Indexes[Index],
18011822
indexers: Mapping[Any, Any],
18021823
) -> tuple[dict[Hashable, Index], dict[Hashable, Variable]]:
1803-
return _apply_indexes(indexes, indexers, "isel")
1824+
return _apply_indexes_isel(indexes, indexers)
18041825

18051826

18061827
def roll_indexes(

0 commit comments

Comments
 (0)