Skip to content

Commit d362a3c

Browse files
committed
Preserving dtype in Series.any/all function with level keyword #33449
1 parent c6c5367 commit d362a3c

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

pandas/core/generic.py

+4
Original file line numberDiff line numberDiff line change
@@ -11222,6 +11222,10 @@ def logical_func(self, axis=0, bool_only=None, skipna=True, level=None, **kwargs
1122211222
raise NotImplementedError(
1122311223
"Option bool_only is not implemented with option level."
1122411224
)
11225+
if isinstance(self, ABCSeries) and self.dtype.name == "boolean":
11226+
return self._agg_by_level(
11227+
name, axis=axis, level=level, skipna=skipna
11228+
).astype("boolean")
1122511229
return self._agg_by_level(name, axis=axis, level=level, skipna=skipna)
1122611230
return self._reduce(
1122711231
func,

pandas/tests/reductions/test_reductions.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -912,8 +912,13 @@ def test_all_any_boolean(self):
912912
index=[0, 0, 1, 1, 2, 2],
913913
dtype="boolean",
914914
)
915-
tm.assert_series_equal(s.all(level=0), Series([False, True, False]))
916-
tm.assert_series_equal(s.any(level=0), Series([False, True, True]))
915+
result = s.all(level=0)
916+
expected = Series([False, True, False], dtype="boolean")
917+
tm.assert_series_equal(result, expected)
918+
919+
result = s.any(level=0)
920+
expected = Series([False, True, True], dtype="boolean")
921+
tm.assert_series_equal(result, expected)
917922

918923
def test_timedelta64_analytics(self):
919924

0 commit comments

Comments
 (0)