Skip to content

Commit 06e04b0

Browse files
Backport PR #54509 on branch 2.1.x (PERF: Dataframe reductions with EA dtypes) (#54514)
Backport PR #54509: PERF: Dataframe reductions with EA dtypes Co-authored-by: Luke Manley <[email protected]>
1 parent 0fb9149 commit 06e04b0

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

pandas/core/frame.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -11109,14 +11109,20 @@ def func(values: np.ndarray):
1110911109
# We only use this in the case that operates on self.values
1111011110
return op(values, axis=axis, skipna=skipna, **kwds)
1111111111

11112+
dtype_has_keepdims: dict[ExtensionDtype, bool] = {}
11113+
1111211114
def blk_func(values, axis: Axis = 1):
1111311115
if isinstance(values, ExtensionArray):
1111411116
if not is_1d_only_ea_dtype(values.dtype) and not isinstance(
1111511117
self._mgr, ArrayManager
1111611118
):
1111711119
return values._reduce(name, axis=1, skipna=skipna, **kwds)
11118-
sign = signature(values._reduce)
11119-
if "keepdims" in sign.parameters:
11120+
has_keepdims = dtype_has_keepdims.get(values.dtype)
11121+
if has_keepdims is None:
11122+
sign = signature(values._reduce)
11123+
has_keepdims = "keepdims" in sign.parameters
11124+
dtype_has_keepdims[values.dtype] = has_keepdims
11125+
if has_keepdims:
1112011126
return values._reduce(name, skipna=skipna, keepdims=True, **kwds)
1112111127
else:
1112211128
warnings.warn(

0 commit comments

Comments
 (0)