API/BUG: PandasArray setitem can change underlying buffer · Issue #28150 · pandas-dev/pandas (original) (raw)

Discussed briefly in #28119, the ndarray backing a PandasArray can be swapped out by setitem, which can have surprising behavior for views

arr = pd.array([1, 2, 3])
view1 = arr.view()
view2 = arr[:]
view3 = np.asarray(arr)

arr[0] = 9
assert view1[0] == 9
assert view2[0] == 9 
assert view3[0] == 9

arr[1] = 2.5
view1[-1] = 5
assert arr[-1] == 5  # FAIL