Skip to content

Commit 7f57f01

Browse files
authored
Fix drop_sel for a MultiIndex (#10863)
1 parent 9178c75 commit 7f57f01

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

xarray/core/dataset.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6065,6 +6065,8 @@ def drop_sel(
60656065
Data variables:
60666066
A (x, y) int64 32B 0 2 3 5
60676067
"""
6068+
from xarray.core.dataarray import DataArray
6069+
60686070
if errors not in ["raise", "ignore"]:
60696071
raise ValueError('errors must be either "raise" or "ignore"')
60706072

@@ -6076,7 +6078,11 @@ def drop_sel(
60766078
# is a large numpy array
60776079
if utils.is_scalar(labels_for_dim):
60786080
labels_for_dim = [labels_for_dim]
6079-
labels_for_dim = np.asarray(labels_for_dim)
6081+
# Most conversion to arrays is better handled in the indexer, however
6082+
# DataArrays are a special case where the underlying libraries don't provide
6083+
# a good conversition.
6084+
if isinstance(labels_for_dim, DataArray):
6085+
labels_for_dim = np.asarray(labels_for_dim)
60806086
try:
60816087
index = self.get_index(dim)
60826088
except KeyError as err:

xarray/tests/test_dataset.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2980,6 +2980,21 @@ def test_drop_multiindex_level(self) -> None:
29802980
actual = data.drop_vars("level_1")
29812981
assert_identical(expected, actual)
29822982

2983+
def test_drop_multiindex_labels(self) -> None:
2984+
data = create_test_multiindex()
2985+
mindex = pd.MultiIndex.from_tuples(
2986+
[
2987+
("a", 2),
2988+
("b", 1),
2989+
("b", 2),
2990+
],
2991+
names=("level_1", "level_2"),
2992+
)
2993+
expected = Dataset({}, Coordinates.from_pandas_multiindex(mindex, "x"))
2994+
2995+
actual = data.drop_sel(x=("a", 1))
2996+
assert_identical(expected, actual)
2997+
29832998
def test_drop_index_labels(self) -> None:
29842999
data = Dataset({"A": (["x", "y"], np.random.randn(2, 3)), "x": ["a", "b"]})
29853000

0 commit comments

Comments
 (0)