diff --git a/pandas/core/arrays/arrow/array.py b/pandas/core/arrays/arrow/array.py index 221191773186e..fa0eaa5c05279 100644 --- a/pandas/core/arrays/arrow/array.py +++ b/pandas/core/arrays/arrow/array.py @@ -1594,7 +1594,8 @@ def to_numpy( def map(self, mapper, na_action: Literal["ignore"] | None = None): if is_numeric_dtype(self.dtype): - return map_array(self.to_numpy(), mapper, na_action=na_action) + result = map_array(self.to_numpy(), mapper, na_action=na_action) + return self._cast_pointwise_result(result) else: return super().map(mapper, na_action) diff --git a/pandas/core/arrays/base.py b/pandas/core/arrays/base.py index 1cd10a9eef9d1..1c5e7881c215c 100644 --- a/pandas/core/arrays/base.py +++ b/pandas/core/arrays/base.py @@ -2530,7 +2530,8 @@ def map(self, mapper, na_action: Literal["ignore"] | None = None): If the function returns a tuple with more than one element a MultiIndex will be returned. """ - return map_array(self, mapper, na_action=na_action) + results = map_array(self, mapper, na_action=na_action) + return self._cast_pointwise_result(results) # ------------------------------------------------------------------------ # GroupBy Methods diff --git a/pandas/core/arrays/masked.py b/pandas/core/arrays/masked.py index 0402452e484ea..e56ca7b0fed39 100644 --- a/pandas/core/arrays/masked.py +++ b/pandas/core/arrays/masked.py @@ -1395,7 +1395,8 @@ def max(self, *, skipna: bool = True, axis: AxisInt | None = 0, **kwargs): return self._wrap_reduction_result("max", result, skipna=skipna, axis=axis) def map(self, mapper, na_action: Literal["ignore"] | None = None): - return map_array(self.to_numpy(), mapper, na_action=na_action) + result = map_array(self.to_numpy(), mapper, na_action=na_action) + return self._cast_pointwise_result(result) @overload def any(