Skip to content

Commit 0c5a570

Browse files
Backport PR pandas-dev#51605 on branch 2.0.x (REGR: MultiIndex.isin with empty iterable raising) (pandas-dev#51617)
Backport PR pandas-dev#51605: REGR: MultiIndex.isin with empty iterable raising Co-authored-by: Patrick Hoefler <[email protected]>
1 parent 03272ab commit 0c5a570

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

pandas/core/indexes/multi.py

+2
Original file line numberDiff line numberDiff line change
@@ -3748,6 +3748,8 @@ def delete(self, loc) -> MultiIndex:
37483748
@doc(Index.isin)
37493749
def isin(self, values, level=None) -> npt.NDArray[np.bool_]:
37503750
if level is None:
3751+
if len(values) == 0:
3752+
return np.zeros((len(self),), dtype=np.bool_)
37513753
if not isinstance(values, MultiIndex):
37523754
values = MultiIndex.from_tuples(values)
37533755
return values.unique().get_indexer_for(self) != -1

pandas/tests/indexes/multi/test_isin.py

+8
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,11 @@ def test_isin_multi_index_with_missing_value(labels, expected, level):
8585
midx = MultiIndex.from_arrays([[np.nan, "a", "b"], ["c", "d", np.nan]])
8686
result = midx.isin(labels, level=level)
8787
tm.assert_numpy_array_equal(result, expected)
88+
89+
90+
def test_isin_empty():
91+
# GH#51599
92+
midx = MultiIndex.from_arrays([[1, 2], [3, 4]])
93+
result = midx.isin([])
94+
expected = np.array([False, False])
95+
tm.assert_numpy_array_equal(result, expected)

0 commit comments

Comments
 (0)