From c0a537676299acfb537a959d3af4629ae3b16c2d Mon Sep 17 00:00:00 2001 From: Brock Date: Sat, 6 Sep 2025 09:58:15 -0700 Subject: [PATCH 1/2] PERF: fail-fast in object-dtype mean --- pandas/core/nanops.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pandas/core/nanops.py b/pandas/core/nanops.py index bb0c3759fae34..287832b13910e 100644 --- a/pandas/core/nanops.py +++ b/pandas/core/nanops.py @@ -693,6 +693,10 @@ def nanmean( >>> nanops.nanmean(s.values) np.float64(1.5) """ + if values.dtype == object and len(values) > 1_000 and mask is None: + # GH#54754 if we are going to fail, try to fail-fast + nanmean(values[:5], axis=axis, skipna=skipna) + dtype = values.dtype values, mask = _get_values(values, skipna, fill_value=0, mask=mask) dtype_sum = _get_dtype_max(dtype) From 4e388b8df823b44f99314a66b1b4687c1662c699 Mon Sep 17 00:00:00 2001 From: Brock Date: Wed, 10 Sep 2025 12:29:53 -0700 Subject: [PATCH 2/2] 5->1000 --- pandas/core/nanops.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/core/nanops.py b/pandas/core/nanops.py index 287832b13910e..58bcc60f9274e 100644 --- a/pandas/core/nanops.py +++ b/pandas/core/nanops.py @@ -695,7 +695,7 @@ def nanmean( """ if values.dtype == object and len(values) > 1_000 and mask is None: # GH#54754 if we are going to fail, try to fail-fast - nanmean(values[:5], axis=axis, skipna=skipna) + nanmean(values[:1000], axis=axis, skipna=skipna) dtype = values.dtype values, mask = _get_values(values, skipna, fill_value=0, mask=mask)