У меня есть следующее:
df1 = pd.DataFrame({'Effective_Date':pd.to_datetime(['12/31/2017', '1/31/2018', '2/28/2018', '3/31/2018', '9/30/2020']),
'Amount':[100,150,300,500,750]})
Date_Range = pd.date_range('12/31/2017', periods=150, freq='M')
Я пытаюсь создать отдельный фрейм данных, который возвращает df1 ['Amount'], когда месяц df1 ['Effective_Date'] = месяц Date_Range. Однако, если Date_Range равен
Например, дата вступления в силу 31.01.19 с Amount = 5 будет иметь 5 для Date_Range = 1/31/19, 1/31/20, 1/31/21 и т. Д. Везде 0.
Я могу сделать две части отдельно:
Если месяцы равны:
df2 = (pd.DataFrame(np.equal.outer(df1.Effective_Date.dt.month, Date_Range.month) * df1.Amount.values[:,None], columns = Date_Range))
Если Date_Range <Дата вступления в силу, вернуть 0: </p>
df3 = (pd.DataFrame(np.less_equal.outer(df1.Effective_Date, Date_Range) * df1['Amount'].values[:,None], columns = Date_Range))
Но я не уверен, как их объединить. Ценю твою помощь.