Вы на самом деле интерполируете две разные функции!
В первом случае вы ищете функцию, которая проходит через следующие пункты:
(0,0) , (1,2), ( 3 , 8)
Но во втором случае вы ищете функцию, которая проходит следующие пункты:
(0,0), (1, 2), ( 4 , 8)
Индексы pd.Series
представляют точки на оси X, а данные pd.Series
представляют точки на Ось Y.
Итак, попробуйте следующее изменение в вашем первом примере:
s = pd.Series([0, 2, np.nan, 8])
s = pd.Series([0, 2, np.nan, 8], [0,1,2,4])
s.interpolate(method='polynomial', order=2)
Вы должны получить вывод:
0 0.0
1 2.0
2 4.0
4 8.0
dtype: float64
В качестве альтернативы вы также можете сделать: s = pd.Series([0, 2, np.nan, 8], [0,1,3,4])
и вывод:
0 0.0
1 2.0
3 6.0
4 8.0
dtype: float64
Надеюсь, это поможет.