Меня интересует получение среднемесячных значений для каждого месяца и установка среднемесячных значений равными значению на 15-й день каждого месяца (в пределах дневной серии).
Я начинаю с следующие (это среднемесячные значения, которые мне даны):
m_avg = pd.DataFrame({'Month': ['1.527013956', '1.899169054', '1.669356146','1.44920871', '1.188557788', '1.017035727', '0.950243755', '1.022453993', '1.203913739', '1.369545041','1.441827406','1.48621651']
РЕДАКТИРОВАТЬ: я добавил еще одно значение в кадр данных, чтобы теперь было 12 значений.
Далее я хочу поместить каждое из этих месячных значений на 15-й день (в пределах каждого месяца) для следующего периода времени:
ts = pd.date_range(start='1/1/1950', end='12/31/1999', freq='D')
Я знаю, как вытащить дату на 15-й день уже существующие ежедневные ряды, используя:
df= df.loc[(df.index.day==15)] # Where df is any daily timeseries
Наконец, я знаю, как интерполировать значения, если у меня есть среднемесячные значения на 15-й день каждого месяца, используя:
df.loc[:, ['Col1']] = df.loc[:, ['Col1']].interpolate(method='linear', limit_direction='both', limit=100)
Как мне перейти от месячного DataFrame к интерполированному ежедневному DataFrame, где я линейно интерполирую между 15-м днем каждого месяца, который является месячным значением моего исходного DataFrame по построению?
РЕДАКТИРОВАТЬ:
Ваше предложение использовать np.tile () было хорошо, но мне пришлось сделать это для нескольких столбцов. Вместо np.tile я использовал:
index = pd.date_range(start='1/1/1950', end='12/31/1999', freq='MS')
m_avg = pd.concat([month]*49,axis=0).set_index(index)
Возможно, есть лучшее решение, но пока это работает для моих нужд.