Python 3.x 在指定的日期范围内使用Python math.prod()
我对Python比较陌生,但我有一个复杂的问题,我认为需要几个不同的函数,但我不知道从哪里开始 在Excel中,使用产品函数非常简单,它基于最新续订日期之前的起始点(在本例中为2020年10月1日),简单地乘以每个起始点元素的产品函数总数,得到当前续订日期总数,并按元素值细分 我想用Python写这篇文章,但是除了关于Python3.8 math.prod()的基本信息外,我似乎没有其他东西可以在网上找到来解决/帮助我解决这个问题 我有以下3个数据帧(为了便于解释,我从Excel复制了数据并粘贴在下面的链接中,但我已经在测试代码中将它们作为数据帧导入) 数据以这种形式出现,需要将其整理在一起,并根据成员权利的不同要素进行重新估价,需要从开始日期(“起始日期”)到当前“续约”日期(2020年10月1日)-如果可能,从开始日期到第一个续约日期(相当于Excel YEARFRAC函数),还需要在完整的月份内按比例完成 这3个数据帧是:Python 3.x 在指定的日期范围内使用Python math.prod(),python-3.x,pandas,dataframe,python-datetime,Python 3.x,Pandas,Dataframe,Python Datetime,我对Python比较陌生,但我有一个复杂的问题,我认为需要几个不同的函数,但我不知道从哪里开始 在Excel中,使用产品函数非常简单,它基于最新续订日期之前的起始点(在本例中为2020年10月1日),简单地乘以每个起始点元素的产品函数总数,得到当前续订日期总数,并按元素值细分 我想用Python写这篇文章,但是除了关于Python3.8 math.prod()的基本信息外,我似乎没有其他东西可以在网上找到来解决/帮助我解决这个问题 我有以下3个数据帧(为了便于解释,我从Excel复制了数据并粘贴
- 示例中的MemberID,Python函数应该在2016年10月1日(DD/MM/YYYY)开始日期之后找到第一次增加
- 然后,职能部门应检查2016年10月1日至2020年10月1日的最新续约日期之间各要素的续约日期增加情况。Excel乘积公式给出的元素增量为:元素1到3分别为1.38823、1.20396和1.20462
- 最后,StartDate中的元素乘以每个批次的产品总数,得到当前值
将熊猫作为pd导入
df_startDate=pd.DataFrame({
“开始日期”:pd.截止日期时间(2016年2月1日、2017年4月10日、2018年9月29日、2018年11月5日),
},索引=['90000001','9000023','9004561','9007910'])
df_续订=pd.DataFrame({
“要素1”:[1.05,1.04,1.06,1.10,1.08,1.06],
“要素2”:[1.03,1.02,1.07,1.05,1.03,1.02],
“要素3”:[1.04,1.04,1.05,1.03,1.02,1.05],
},index=pd.to_datetime(['01/10/'+str(i)表示范围内的i(2015、2021)])
df_assets=pd.DataFrame({
“元素1”:[1000150020001750],
‘要素2’:[15002000250020000],
“要素3”:[2000、2500、3000、2250],
},索引=['90000001','9000023','9004561','9007910'])
打印(df_开始日期)
打印(df_更新)
打印(df_资产)
你可以学习我的方法:
results=pd.DataFrame(列=['Element 1','Element 2','Element 3']
对于df_startDate.index中的成员id:
打印(“*******”)
打印(成员id)
#获取StartDate和当前日期之间的行
df_factors=df_renewals.loc[df_startDate['startDate'].loc[member_id]:pd.Timestamp.now()]
打印(df_因子,结束='\n\n')
#将行相乘得到总因子
产品系数=df系数。产品(轴=指数)
打印(prod_factors.to_frame().T,end='\n\n')
#将因子与基值相乘
results.loc[member\u id]=df\u assets.loc[member\u id].mul(生产因素)
打印(results.loc[member\u id]。到\u frame().T,end='\n\n')
打印(结果)
无注释/打印:
results=pd.DataFrame(列=['Element 1','Element 2','Element 3']
对于df_startDate.index中的成员id:
df_factors=df_renewals.loc[df_startDate['startDate'].loc[member_id]:pd.Timestamp.now()]
results.loc[member\u id]=df\u assets.loc[member\u id].mul(df\u factors.product(axis='index'