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.