У меня есть набор данных в реальном времени из одного источника, который работает с 2003 по 2018 год. У меня есть другой источник, в котором есть данные только за 1990 год. Я хочу объединить данные и создать временной ряд с 1990 по 2018 год.
Используя pandas Я объединил ряды, которые выглядят так, как показано ниже:
dates
1990-01-01 8.8 11.4
1990-02-01 7.8 12.8
1990-03-01 5.6 18.6
.....
2003-01-01 10.3 11.6
2003-02-01 9.6 15.0
2003-03-01 7.5 21.7
При повторной индексации я создал новый кадр с периодичностью в месяц и нансами для пропущенных значений, а затем провел интерполяцию отсутствующих данных.
start = dtm.datetime(1990,1,1)
end = dtm.datetime(2018,12,1)
frames = [df1,df2]
combined = pd.concat(frames)
rsam = pd.date_range(start,end, freq = 'MS')
combined = combined.reindex(rsam,axis = 0)
combined['NH'] = combined['NH'].interpolate(method = 'spline', order = 3)
combined['SH'] = combined['SH'].interpolate(method = 'spline', order = 3)
Если пробовали разные методы и добавляли limit_area, limit_direction et c.
Однако интерполяция дает мне действительно странный результат.
Вывод графика после интерполяции
Это, на мой взгляд, связано с тем, что при интерполяции используются данные 1990 г. для прямой интерполяции. Однако данные за 2003-2008 гг. Являются пояснительными, а данные за 1990 г. используются только для интерполяции (вместо экстраполяции). Как я могу создать временной ряд, который использует 2003-2008 годы для интерполяции данных до 1990 года, а не наоборот?
Я пытался отменить все данные, но переиндексация не работает, если даты не указаны в обычном порядке. Можно ли сделать с pandas?