我有以下几点:
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的月份['Effective\u Date']=Date的月份范围时返回df1['Amount']。但是,如果日期范围为<;df1['Effective\u Date'],则返回0。你知道吗
例如,生效日期1/31/19,金额=5,则日期范围=1/31/19、1/31/20、1/31/21等为5,其他地方为0。你知道吗
我可以分别做这两件事:
如果月份相等:
df2 = (pd.DataFrame(np.equal.outer(df1.Effective_Date.dt.month, Date_Range.month) * df1.Amount.values[:,None], columns = Date_Range))
如果日期范围<;生效日期,则返回0:
df3 = (pd.DataFrame(np.less_equal.outer(df1.Effective_Date, Date_Range) * df1['Amount'].values[:,None], columns = Date_Range))
但我不知道如何将两者结合起来。谢谢你的帮助。你知道吗
我相信你需要^{} :
相关问题 更多 >
编程相关推荐