Skip to content

Commit 11de335

Browse files
committed
ENH: deprecate numeric_only=None in reductions during 2.x\n\nCall deprecate_numeric_only_none and validate_bool_kwarg at central reduction entry points (DataFrame._reduce, Series._reduce, GroupBy._cython_agg_general, Rolling._validate_numeric_only). Emit PandasFutureWarning for numeric_only=None (GH#53098).
1 parent af1f222 commit 11de335

File tree

4 files changed

+44
-0
lines changed

4 files changed

+44
-0
lines changed

pandas/core/frame.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11926,6 +11926,18 @@ def _reduce(
1192611926
if axis is not None:
1192711927
axis = self._get_axis_number(axis)
1192811928

11929+
# validate numeric_only is strictly a bool (disallow None, ints, etc.)
11930+
# Deprecate passing None to numeric_only: warn now, error in a future
11931+
# release. See GH#53098.
11932+
from pandas.util._validators import deprecate_numeric_only_none
11933+
11934+
deprecate_numeric_only_none(numeric_only, "numeric_only")
11935+
# During the 2.x cycle we warn if numeric_only is None but continue to
11936+
# accept None; later releases should set none_allowed=False to raise.
11937+
validate_bool_kwarg(
11938+
numeric_only, "numeric_only", none_allowed=True, int_allowed=False
11939+
)
11940+
1192911941
def func(values: np.ndarray):
1193011942
# We only use this in the case that operates on self.values
1193111943
return op(values, axis=axis, skipna=skipna, **kwds)

pandas/core/groupby/groupby.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ class providing the base-class of operations.
7070
doc,
7171
)
7272
from pandas.util._exceptions import find_stack_level
73+
from pandas.util._validators import validate_bool_kwarg
7374

7475
from pandas.core.dtypes.cast import (
7576
coerce_indexer_dtype,
@@ -1756,6 +1757,16 @@ def _cython_agg_general(
17561757
# Note: we never get here with how="ohlc" for DataFrameGroupBy;
17571758
# that goes through SeriesGroupBy
17581759

1760+
# validate numeric_only is strictly a bool (disallow None, ints, etc.)
1761+
# Deprecate passing None to numeric_only: warn now, error in a future
1762+
# release. See GH#53098.
1763+
from pandas.util._validators import deprecate_numeric_only_none
1764+
1765+
deprecate_numeric_only_none(numeric_only, "numeric_only")
1766+
validate_bool_kwarg(
1767+
numeric_only, "numeric_only", none_allowed=True, int_allowed=False
1768+
)
1769+
17591770
data = self._get_data_to_aggregate(numeric_only=numeric_only, name=how)
17601771

17611772
def array_func(values: ArrayLike) -> ArrayLike:

pandas/core/series.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6664,6 +6664,16 @@ def _reduce(
66646664
if axis is not None:
66656665
self._get_axis_number(axis)
66666666

6667+
# validate numeric_only is strictly a bool (disallow None, ints, etc.)
6668+
# Deprecate passing None to numeric_only: warn now, error in a future
6669+
# release. See GH#53098.
6670+
from pandas.util._validators import deprecate_numeric_only_none
6671+
6672+
deprecate_numeric_only_none(numeric_only, "numeric_only")
6673+
validate_bool_kwarg(
6674+
numeric_only, "numeric_only", none_allowed=True, int_allowed=False
6675+
)
6676+
66676677
if isinstance(delegate, ExtensionArray):
66686678
# dispatch to ExtensionArray interface
66696679
return delegate._reduce(name, skipna=skipna, **kwds)

pandas/core/window/rolling.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
Substitution,
3636
doc,
3737
)
38+
from pandas.util._validators import validate_bool_kwarg
3839

3940
from pandas.core.dtypes.common import (
4041
ensure_float64,
@@ -254,6 +255,16 @@ def _validate_numeric_only(self, name: str, numeric_only: bool) -> None:
254255
numeric_only : bool
255256
Value passed by user.
256257
"""
258+
# validate numeric_only argument type
259+
# Deprecate passing None to numeric_only: warn now, error in a future
260+
# release. See GH#53098.
261+
from pandas.util._validators import deprecate_numeric_only_none
262+
263+
deprecate_numeric_only_none(numeric_only, "numeric_only")
264+
validate_bool_kwarg(
265+
numeric_only, "numeric_only", none_allowed=True, int_allowed=False
266+
)
267+
257268
if (
258269
self._selected_obj.ndim == 1
259270
and numeric_only

0 commit comments

Comments
 (0)