我有一个数据集,我正在计算以下公式定义的“危险率”:
if t = 1:
hr_t = pd_t
else:
hr_t = (pd_t * (t - (t-1)) + hr_(t-1) * (t-1)) / t
其中t代表时间(以年表示)
最简单的方法是遍历表中的每一行。然而,这也是最慢的。有没有一种有效的方法可以根据数据帧中的条件来计算上述两个公式?你知道吗
#Create the year and PD values
data = {'Year':[1,2,3,4,5],
'PD': [0.1, 0.23, 0.22, 0.19, 0.10]}
data
#Create a dataframe
df = pd.DataFrame(data)
df
使用上述两个函数中的一个计算每个时间段(每行所示的t)的危险率。随着年份的增加,危险率参考同一行,但是前一年的函数
输出示例:
Year PD Hazard_rate
1 0.1 0.1
2 0.23 0.165
3 0.22 0.226667
4 0.19 0.2125
5 0.10 0.172
第2年的危险率按以下方式计算:
PD Year-(Year-Year-1)+hazard_rate_(Year-1) * (Year - 1) / (Year)
0.23 * (2 - (2 - 1)) + 0.1 * (2 - 1) / 2 = 0.165
我不确定如何得到t和HR,因为它们不在df中,但这适用于常量,如果它们是列,那么只需将计算函数中的常量替换为行['t'],并从函数的参数中删除HR和t
输出:
编辑:用户得到一个bug/错误,所以这个列表实现应该可以工作(与上面的假设相同)。你知道吗
相关问题 更多 >
编程相关推荐