Skip to content

Commit f603de0

Browse files
committed
only reduce 1d
1 parent 026696f commit f603de0

File tree

1 file changed

+13
-14
lines changed

1 file changed

+13
-14
lines changed

pandas/core/arrays/masked.py

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1095,32 +1095,31 @@ def _reduce(self, name: str, *, skipna: bool = True, **kwargs):
10951095
axis = kwargs.pop("axis", None)
10961096
result = op(data, axis=axis, skipna=skipna, mask=mask, **kwargs)
10971097
if np.isnan(result):
1098-
result = libmissing.NA
1098+
return libmissing.NA
10991099

1100-
return self._wrap_reduction_result(name, result, skipna=skipna, axis=axis)
1100+
return result
11011101

11021102
def _reduce_and_wrap(self, name: str, *, skipna: bool = True, kwargs):
1103-
df = self.reshape(-1, 1)
1104-
res = df._reduce(name=name, skipna=skipna, axis=0, **kwargs)
1105-
return res
1103+
res = self._reduce(name=name, skipna=skipna, **kwargs)
1104+
if res is libmissing.NA:
1105+
return self._wrap_na_result(name=name, axis=0, mask_size=(1,))
1106+
else:
1107+
res = res.reshape(1)
1108+
mask = np.zeros(1, dtype=bool)
1109+
return self._maybe_mask_result(res, mask)
11061110

1107-
def _wrap_reduction_result(self, name: str, result, *, mask=None, skipna, axis):
1111+
def _wrap_reduction_result(self, name: str, result, *, skipna, axis):
11081112
if isinstance(result, np.ndarray):
1109-
mask = mask if mask is not None else self._mask
11101113
if skipna:
11111114
# we only retain mask for all-NA rows/columns
1112-
mask = mask.all(axis=axis)
1115+
mask = self._mask.all(axis=axis)
11131116
else:
1114-
mask = mask.any(axis=axis)
1117+
mask = self._mask.any(axis=axis)
11151118

11161119
return self._maybe_mask_result(result, mask)
1117-
elif result is libmissing.NA and self.ndim == 2:
1118-
result = self._wrap_na_result(name=name, axis=axis)
1119-
return result
11201120
return result
11211121

1122-
def _wrap_na_result(self, *, name, axis):
1123-
mask_size = self.shape[1] if axis == 0 else self.shape[0]
1122+
def _wrap_na_result(self, *, name, axis, mask_size):
11241123
mask = np.ones(mask_size, dtype=bool)
11251124

11261125
float_dtyp = "float32" if self.dtype == "Float32" else "float64"

0 commit comments

Comments
 (0)