Если индекс действительно что-то значит, то есть у вас есть значение, которое изменяется на определенную дату, и вы хотите продолжать использовать его, пока оно не изменится в следующий раз. Затем вы можете использовать команду reindex
с аргументом method='ffill'
для создания кадра данных, который выровнен с исходным кадром данных. Вот как это выглядит:
import pandas as pd
import dateutil
df = pd.DataFrame([['2017-10-5',2,3],
['2017-10-6',5,5],
['2017-11-5',7,8],
['2017-11-6',11,13]],
columns = ['date','A','B'])
df['date'] = df['date'].apply(dateutil.parser.parse)
df = df.set_index('date')
wdf = pd.DataFrame([['2017-09-30',-0.2,0.01],
['2017-10-31',-0.03,0.04]],
columns=['date','W1','W2'])
wdf['date'] = wdf['date'].apply(dateutil.parser.parse)
wdf = wdf.set_index('date')
wdf_r = wdf.reindex(df.index,
method='ffill')
res = df.drop(['A','B'],axis=1).assign(W1_x_A = wdf_r.W1 * df.A,
W2_x_B = wdf_r.W2 * df.B)
print(res)
который выводит
W1_x_A W2_x_B
date
2017-10-05 -0.40 0.03
2017-10-06 -1.00 0.05
2017-11-05 -0.21 0.32
2017-11-06 -0.33 0.52