diff --git a/pandas/core/arrays/numeric.py b/pandas/core/arrays/numeric.py index e1990dc064a84..eb955e4d42bc5 100644 --- a/pandas/core/arrays/numeric.py +++ b/pandas/core/arrays/numeric.py @@ -168,7 +168,7 @@ def __neg__(self): return type(self)(-self._data, self._mask.copy()) def __pos__(self): - return self + return self.copy() def __abs__(self): return type(self)(abs(self._data), self._mask.copy()) diff --git a/pandas/core/arrays/timedeltas.py b/pandas/core/arrays/timedeltas.py index 91e90ebdb6253..d247dd3d0d366 100644 --- a/pandas/core/arrays/timedeltas.py +++ b/pandas/core/arrays/timedeltas.py @@ -800,7 +800,7 @@ def __neg__(self) -> TimedeltaArray: return type(self)(-self._ndarray) def __pos__(self) -> TimedeltaArray: - return type(self)(self._ndarray, freq=self.freq) + return type(self)(self._ndarray.copy(), freq=self.freq) def __abs__(self) -> TimedeltaArray: # Note: freq is not preserved diff --git a/pandas/tests/arrays/floating/test_arithmetic.py b/pandas/tests/arrays/floating/test_arithmetic.py index e674b49a99bd4..bd0b8b9c574a4 100644 --- a/pandas/tests/arrays/floating/test_arithmetic.py +++ b/pandas/tests/arrays/floating/test_arithmetic.py @@ -200,4 +200,6 @@ def test_unary_float_operators(float_ea_dtype, source, neg_target, abs_target): tm.assert_extension_array_equal(neg_result, neg_target) tm.assert_extension_array_equal(pos_result, arr) + assert not np.shares_memory(pos_result._data, arr._data) + assert not np.shares_memory(pos_result._mask, arr._mask) tm.assert_extension_array_equal(abs_result, abs_target) diff --git a/pandas/tests/arrays/integer/test_arithmetic.py b/pandas/tests/arrays/integer/test_arithmetic.py index 4f66e2ecfd355..2cf66e599a09a 100644 --- a/pandas/tests/arrays/integer/test_arithmetic.py +++ b/pandas/tests/arrays/integer/test_arithmetic.py @@ -300,4 +300,6 @@ def test_unary_int_operators(any_signed_int_ea_dtype, source, neg_target, abs_ta tm.assert_extension_array_equal(neg_result, neg_target) tm.assert_extension_array_equal(pos_result, arr) + assert not np.shares_memory(pos_result._data, arr._data) + assert not np.shares_memory(pos_result._mask, arr._mask) tm.assert_extension_array_equal(abs_result, abs_target) diff --git a/pandas/tests/arrays/test_timedeltas.py b/pandas/tests/arrays/test_timedeltas.py index 98329776242f1..10d12446666ce 100644 --- a/pandas/tests/arrays/test_timedeltas.py +++ b/pandas/tests/arrays/test_timedeltas.py @@ -99,9 +99,11 @@ def test_pos(self): result = +arr tm.assert_timedelta_array_equal(result, arr) + assert not np.shares_memory(result._ndarray, arr._ndarray) result2 = np.positive(arr) tm.assert_timedelta_array_equal(result2, arr) + assert not np.shares_memory(result2._ndarray, arr._ndarray) def test_neg(self): vals = np.array([-3600 * 10 ** 9, "NaT", 7200 * 10 ** 9], dtype="m8[ns]")