Skip to content

Commit ad8cae5

Browse files
GH1488 Add overload for DataFrame.max when axis is None (pandas-dev#1490)
* GH1488 Add overload for DataFrame.max when axis is None * GH1488 PR feedback * GH1488 PR feedback * GH1488 PR Feedback
1 parent 2fdf7ed commit ad8cae5

File tree

3 files changed

+52
-8
lines changed

3 files changed

+52
-8
lines changed

pandas-stubs/core/frame.pyi

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2344,30 +2344,66 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
23442344
axis: Axis | None = ...,
23452345
level: Level | None = None,
23462346
) -> Self: ...
2347+
@overload
23472348
def max(
23482349
self,
2349-
axis: Axis | None = 0,
2350+
axis: None,
2351+
skipna: _bool | None = True,
2352+
numeric_only: _bool = False,
2353+
**kwargs: Any,
2354+
) -> Scalar: ...
2355+
@overload
2356+
def max(
2357+
self,
2358+
axis: Axis = 0,
23502359
skipna: _bool | None = True,
23512360
numeric_only: _bool = False,
23522361
**kwargs: Any,
23532362
) -> Series: ...
2363+
@overload
23542364
def mean(
23552365
self,
2356-
axis: Axis | None = 0,
2366+
axis: None,
2367+
skipna: _bool | None = True,
2368+
numeric_only: _bool = False,
2369+
**kwargs: Any,
2370+
) -> Scalar: ...
2371+
@overload
2372+
def mean(
2373+
self,
2374+
axis: Axis = 0,
23572375
skipna: _bool | None = True,
23582376
numeric_only: _bool = False,
23592377
**kwargs: Any,
23602378
) -> Series: ...
2379+
@overload
23612380
def median(
23622381
self,
2363-
axis: Axis | None = 0,
2382+
axis: None,
2383+
skipna: _bool | None = True,
2384+
numeric_only: _bool = False,
2385+
**kwargs: Any,
2386+
) -> Scalar: ...
2387+
@overload
2388+
def median(
2389+
self,
2390+
axis: Axis = 0,
23642391
skipna: _bool | None = True,
23652392
numeric_only: _bool = False,
23662393
**kwargs: Any,
23672394
) -> Series: ...
2395+
@overload
23682396
def min(
23692397
self,
2370-
axis: Axis | None = 0,
2398+
axis: None,
2399+
skipna: _bool | None = True,
2400+
numeric_only: _bool = False,
2401+
**kwargs: Any,
2402+
) -> Scalar: ...
2403+
@overload
2404+
def min(
2405+
self,
2406+
axis: Axis = 0,
23712407
skipna: _bool | None = True,
23722408
numeric_only: _bool = False,
23732409
**kwargs: Any,

tests/series/test_series.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -578,10 +578,14 @@ def test_types_cumsum() -> None:
578578

579579
def test_types_min() -> None:
580580
s = pd.Series([1, 2, 3, np.nan])
581-
s.min()
582-
s.min(axis=0)
583-
s.groupby(level=0).min()
584-
s.min(skipna=False)
581+
check(assert_type(s.min(), float), np.floating)
582+
check(assert_type(s.min(axis=0), float), np.floating)
583+
check(
584+
assert_type(s.groupby(level=0).min(), "pd.Series[float]"),
585+
pd.Series,
586+
np.floating,
587+
)
588+
check(assert_type(s.min(skipna=False), float), np.floating)
585589

586590

587591
def test_types_max() -> None:

tests/test_frame.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -713,6 +713,7 @@ def test_types_mean() -> None:
713713
df = pd.DataFrame(data={"col1": [2, 1], "col2": [3, 4]})
714714
check(assert_type(df.mean(), pd.Series), pd.Series)
715715
check(assert_type(df.mean(axis=0), pd.Series), pd.Series)
716+
check(assert_type(df.mean(axis=None), Scalar), np.floating)
716717
check(assert_type(df.groupby(level=0).mean(), pd.DataFrame), pd.DataFrame)
717718
check(
718719
assert_type(df.mean(axis=1, skipna=True, numeric_only=False), pd.Series),
@@ -724,6 +725,7 @@ def test_types_median() -> None:
724725
df = pd.DataFrame(data={"col1": [2, 1], "col2": [3, 4]})
725726
check(assert_type(df.median(), pd.Series), pd.Series)
726727
check(assert_type(df.median(axis=0), pd.Series), pd.Series)
728+
check(assert_type(df.median(axis=None), Scalar), np.floating)
727729
check(assert_type(df.groupby(level=0).median(), pd.DataFrame), pd.DataFrame)
728730
check(
729731
assert_type(df.median(axis=1, skipna=True, numeric_only=False), pd.Series),
@@ -820,12 +822,14 @@ def test_types_min() -> None:
820822
df = pd.DataFrame(data={"col1": [2, 1], "col2": [3, 4]})
821823
check(assert_type(df.min(), pd.Series), pd.Series)
822824
check(assert_type(df.min(axis=0), pd.Series), pd.Series)
825+
check(assert_type(df.min(axis=None), Scalar), np.integer)
823826

824827

825828
def test_types_max() -> None:
826829
df = pd.DataFrame(data={"col1": [2, 1], "col2": [3, 4]})
827830
check(assert_type(df.max(), pd.Series), pd.Series)
828831
check(assert_type(df.max(axis=0), pd.Series), pd.Series)
832+
check(assert_type(df.max(axis=None), Scalar), np.integer)
829833

830834

831835
def test_types_quantile() -> None:

0 commit comments

Comments
 (0)