diff --git a/pandas-stubs/core/frame.pyi b/pandas-stubs/core/frame.pyi index 3c5b2010b..df25e8b90 100644 --- a/pandas-stubs/core/frame.pyi +++ b/pandas-stubs/core/frame.pyi @@ -2344,30 +2344,66 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack): axis: Axis | None = ..., level: Level | None = None, ) -> Self: ... + @overload def max( self, - axis: Axis | None = 0, + axis: None, + skipna: _bool | None = True, + numeric_only: _bool = False, + **kwargs: Any, + ) -> Scalar: ... + @overload + def max( + self, + axis: Axis = 0, skipna: _bool | None = True, numeric_only: _bool = False, **kwargs: Any, ) -> Series: ... + @overload def mean( self, - axis: Axis | None = 0, + axis: None, + skipna: _bool | None = True, + numeric_only: _bool = False, + **kwargs: Any, + ) -> Scalar: ... + @overload + def mean( + self, + axis: Axis = 0, skipna: _bool | None = True, numeric_only: _bool = False, **kwargs: Any, ) -> Series: ... + @overload def median( self, - axis: Axis | None = 0, + axis: None, + skipna: _bool | None = True, + numeric_only: _bool = False, + **kwargs: Any, + ) -> Scalar: ... + @overload + def median( + self, + axis: Axis = 0, skipna: _bool | None = True, numeric_only: _bool = False, **kwargs: Any, ) -> Series: ... + @overload def min( self, - axis: Axis | None = 0, + axis: None, + skipna: _bool | None = True, + numeric_only: _bool = False, + **kwargs: Any, + ) -> Scalar: ... + @overload + def min( + self, + axis: Axis = 0, skipna: _bool | None = True, numeric_only: _bool = False, **kwargs: Any, diff --git a/tests/series/test_series.py b/tests/series/test_series.py index 4e34a712e..7b0cb0615 100644 --- a/tests/series/test_series.py +++ b/tests/series/test_series.py @@ -578,10 +578,14 @@ def test_types_cumsum() -> None: def test_types_min() -> None: s = pd.Series([1, 2, 3, np.nan]) - s.min() - s.min(axis=0) - s.groupby(level=0).min() - s.min(skipna=False) + check(assert_type(s.min(), float), np.floating) + check(assert_type(s.min(axis=0), float), np.floating) + check( + assert_type(s.groupby(level=0).min(), "pd.Series[float]"), + pd.Series, + np.floating, + ) + check(assert_type(s.min(skipna=False), float), np.floating) def test_types_max() -> None: diff --git a/tests/test_frame.py b/tests/test_frame.py index 521d4b896..0a8a33511 100644 --- a/tests/test_frame.py +++ b/tests/test_frame.py @@ -713,6 +713,7 @@ def test_types_mean() -> None: df = pd.DataFrame(data={"col1": [2, 1], "col2": [3, 4]}) check(assert_type(df.mean(), pd.Series), pd.Series) check(assert_type(df.mean(axis=0), pd.Series), pd.Series) + check(assert_type(df.mean(axis=None), Scalar), np.floating) check(assert_type(df.groupby(level=0).mean(), pd.DataFrame), pd.DataFrame) check( assert_type(df.mean(axis=1, skipna=True, numeric_only=False), pd.Series), @@ -724,6 +725,7 @@ def test_types_median() -> None: df = pd.DataFrame(data={"col1": [2, 1], "col2": [3, 4]}) check(assert_type(df.median(), pd.Series), pd.Series) check(assert_type(df.median(axis=0), pd.Series), pd.Series) + check(assert_type(df.median(axis=None), Scalar), np.floating) check(assert_type(df.groupby(level=0).median(), pd.DataFrame), pd.DataFrame) check( assert_type(df.median(axis=1, skipna=True, numeric_only=False), pd.Series), @@ -820,12 +822,14 @@ def test_types_min() -> None: df = pd.DataFrame(data={"col1": [2, 1], "col2": [3, 4]}) check(assert_type(df.min(), pd.Series), pd.Series) check(assert_type(df.min(axis=0), pd.Series), pd.Series) + check(assert_type(df.min(axis=None), Scalar), np.integer) def test_types_max() -> None: df = pd.DataFrame(data={"col1": [2, 1], "col2": [3, 4]}) check(assert_type(df.max(), pd.Series), pd.Series) check(assert_type(df.max(axis=0), pd.Series), pd.Series) + check(assert_type(df.max(axis=None), Scalar), np.integer) def test_types_quantile() -> None: