IIU C
df.A.to_numpy()[-2:]=op_res
df
A
0 10.5
1 10.5
2 10.5
3 10.5
4 10.5
5 20.5
6 30.5
Проблема в вашем коде: индекс не совпадает, поэтому при его возврате он вернет nan, поскольку pandas assign будет соответствовать индексу как всегда
pd.Series(op_res)
0 20.5
1 30.5
dtype: float64
Индекс из оригинала df
df.iloc[-2:,0]
5 10.5
6 10.5
Name: A, dtype: float64
Сверху мы знаем, что индекс [0,1] не может совпадать с индексом [5,6], поэтому все присвоенные значения вернут nan
.