Skip to content

Commit 4a0bb2e

Browse files
authored
pandas 3 MultiIndex fixes (#8847)
* Fix dropping of muiltiindexes xref #8844 Closes xarray-contrib/flox#342 * More fixes
1 parent 0b6716d commit 4a0bb2e

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

xarray/core/dataset.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5867,7 +5867,7 @@ def drop_vars(
58675867
for var in names_set:
58685868
maybe_midx = self._indexes.get(var, None)
58695869
if isinstance(maybe_midx, PandasMultiIndex):
5870-
idx_coord_names = set(maybe_midx.index.names + [maybe_midx.dim])
5870+
idx_coord_names = set(list(maybe_midx.index.names) + [maybe_midx.dim])
58715871
idx_other_names = idx_coord_names - set(names_set)
58725872
other_names.update(idx_other_names)
58735873
if other_names:

xarray/tests/test_indexes.py

+6-5
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ def test_constructor(self) -> None:
352352
# default level names
353353
pd_idx = pd.MultiIndex.from_arrays([foo_data, bar_data])
354354
index = PandasMultiIndex(pd_idx, "x")
355-
assert index.index.names == ("x_level_0", "x_level_1")
355+
assert list(index.index.names) == ["x_level_0", "x_level_1"]
356356

357357
def test_from_variables(self) -> None:
358358
v_level1 = xr.Variable(
@@ -370,7 +370,7 @@ def test_from_variables(self) -> None:
370370
assert index.dim == "x"
371371
assert index.index.equals(expected_idx)
372372
assert index.index.name == "x"
373-
assert index.index.names == ["level1", "level2"]
373+
assert list(index.index.names) == ["level1", "level2"]
374374

375375
var = xr.Variable(("x", "y"), [[1, 2, 3], [4, 5, 6]])
376376
with pytest.raises(
@@ -413,7 +413,8 @@ def test_stack(self) -> None:
413413
index = PandasMultiIndex.stack(prod_vars, "z")
414414

415415
assert index.dim == "z"
416-
assert index.index.names == ["x", "y"]
416+
# TODO: change to tuple when pandas 3 is minimum
417+
assert list(index.index.names) == ["x", "y"]
417418
np.testing.assert_array_equal(
418419
index.index.codes, [[0, 0, 0, 1, 1, 1], [0, 1, 2, 0, 1, 2]]
419420
)
@@ -531,12 +532,12 @@ def test_rename(self) -> None:
531532
assert new_index is index
532533

533534
new_index = index.rename({"two": "three"}, {})
534-
assert new_index.index.names == ["one", "three"]
535+
assert list(new_index.index.names) == ["one", "three"]
535536
assert new_index.dim == "x"
536537
assert new_index.level_coords_dtype == {"one": "<U1", "three": np.int32}
537538

538539
new_index = index.rename({}, {"x": "y"})
539-
assert new_index.index.names == ["one", "two"]
540+
assert list(new_index.index.names) == ["one", "two"]
540541
assert new_index.dim == "y"
541542
assert new_index.level_coords_dtype == level_coords_dtype
542543

0 commit comments

Comments
 (0)