BUG: Series.setitem failing to cast numeric values by jbrockmendel · Pull Request #45121 · pandas-dev/pandas (original) (raw)
ser = pd.Series([1, 2, 3, 4])
ser[1] = 1.1
>>> ser[1]
1.1 # <- PR
1 # <- master; note that setting with loc or iloc *does* cast
ser2 = pd.Series([1, 2, 3, 4], dtype=np.int8)
ser2[1] = np.int16(512)
>>> ser2[1]
512 # <- PR; casts to int16
0 # <- master; still np.int8; note that setting with with loc or iloc *does* cast
Downside: can_hold_element is heavier-weight than validate_numeric_casting.