Skip to content

Commit 7f423a6

Browse files
committed
NA in arr should return True if arr contains NA
1 parent 15b4d10 commit 7f423a6

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

pandas/core/arrays/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ def __contains__(self, item) -> bool:
358358
# comparisons of any item to pd.NA always return pd.NA, so e.g. "a" in [pd.NA]
359359
# would raise a TypeError. The implementation below works around that.
360360
if isna(item):
361-
return False
361+
return isna(self).any() if self._can_hold_na else False
362362
else:
363363
return (item == self).any()
364364

pandas/tests/arrays/categorical/test_operators.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,4 +406,9 @@ def test_contains(self, ordered):
406406
cat = Categorical([np.nan, "a"], ordered=ordered)
407407
assert "a" in cat
408408
assert "x" not in cat
409-
assert pd.NA not in cat
409+
assert pd.NA in cat
410+
411+
cat = cat[::-1]
412+
assert "a" in cat
413+
assert "x" not in cat
414+
assert pd.NA in cat

pandas/tests/arrays/string_/test_string.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -358,4 +358,9 @@ def test_contains():
358358
arr = pd.arrays.StringArray(np.array(["a", pd.NA]))
359359
assert "a" in arr
360360
assert "x" not in arr
361-
assert pd.NA not in arr
361+
assert pd.NA in arr
362+
363+
arr = arr[::-1]
364+
assert "a" in arr
365+
assert "x" not in arr
366+
assert pd.NA in arr

0 commit comments

Comments
 (0)