Skip to content

Commit 3f10d51

Browse files
authored
REGR: Series.mode with boolean and pd.NA (#42131)
1 parent 56657dc commit 3f10d51

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

pandas/core/algorithms.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,11 @@ def _ensure_data(values: ArrayLike) -> tuple[np.ndarray, DtypeObj]:
140140
return np.asarray(values).view("uint8"), values.dtype
141141
else:
142142
# i.e. all-bool Categorical, BooleanArray
143-
return np.asarray(values).astype("uint8", copy=False), values.dtype
143+
try:
144+
return np.asarray(values).astype("uint8", copy=False), values.dtype
145+
except TypeError:
146+
# GH#42107 we have pd.NAs present
147+
return np.asarray(values), values.dtype
144148

145149
elif is_integer_dtype(values.dtype):
146150
return np.asarray(values), values.dtype

pandas/tests/reductions/test_reductions.py

+7
Original file line numberDiff line numberDiff line change
@@ -1480,3 +1480,10 @@ def test_mode_sortwarning(self):
14801480
result = result.sort_values().reset_index(drop=True)
14811481

14821482
tm.assert_series_equal(result, expected)
1483+
1484+
def test_mode_boolean_with_na(self):
1485+
# GH#42107
1486+
ser = Series([True, False, True, pd.NA], dtype="boolean")
1487+
result = ser.mode()
1488+
expected = Series({0: True}, dtype="boolean")
1489+
tm.assert_series_equal(result, expected)

0 commit comments

Comments
 (0)