如何遍历DataFrame列提取指定行数据计算加权平均并生成新DataFrame
三角结构DataFrame批量计算Weighted Average实现
计算需求
遍历DataFrame全部DP列,提取列内Total、Latest Observation两类行的对应单元格值,基于规则完成逐列运算,最终将结果存入新的DataFrame行。
计算规则
逐组遍历相邻DP列对:
- 第一步:计算前序DP列的
Total行值 ÷ 前序DP列的Latest Observation行值,得到中间结果 - 第二步:将中间结果除以后续相邻DP列的
Total行值,得到该列对的最终计算值 - 输出的
Weighted Average行目标样式:
Weighted Average 3.491 1.747 1.457 1.174 1.104 1.086 1.054 1.077 1.018
参考三角表结构
当前使用的三角表核心构成:
- 行维度:事故期OP1~OP10、汇总行
Total、最新观测行Latest Observation - 列维度:发展期DP1~DP10、汇总Total列
- 三角空缺位置填充为NaN,表内容如下:
DP1 DP2 DP3 DP4 DP5 DP6 DP7 DP8 DP9 DP10 Total OP1 357848.0 1124788.0 1735330.0 2218270.0 2745596.0 3319994.0 3466336.0 3606286.0 3833515.0 3901463.0 3901463.0 OP2 352118.0 1236139.0 2170033.0 3353322.0 3799067.0 4120063.0 4647867.0 4914039.0 5339085.0 NaN 5339085.0 OP3 290507.0 1292306.0 2218525.0 3235179.0 3985995.0 4132918.0 4628910.0 4909315.0 NaN NaN 4909315.0 OP4 310608.0 1418858.0 2195047.0 3757447.0 4029929.0 4381982.0 4588268.0 NaN NaN NaN 4588268.0 OP5 443160.0 1136350.0 2128333.0 2897821.0 3402672.0 3873311.0 NaN NaN NaN NaN 3873311.0 OP6 396132.0 1333217.0 2180715.0 2985752.0 3691712.0 NaN NaN NaN NaN NaN 3691712.0 OP7 440832.0 1288463.0 2419861.0 3483130.0 NaN NaN NaN NaN NaN NaN 3483130.0 OP8 359480.0 1421128.0 2864498.0 NaN NaN NaN NaN NaN NaN NaN 2864498.0 OP9 376686.0 1363294.0 NaN NaN NaN NaN NaN NaN NaN NaN 1363294.0 OP10 344014.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN 344014.0 Total 3671385.0 11614543.0 17912342.0 21930921.0 21654971.0 19828268.0 17331381.0 13429640.0 9172600.0 3901463.0 34358090.0 Latest Observation 344014.0 1363294.0 2864498.0 3483130.0 3691712.0 3873311.0 4588268.0 4909315.0 5339085.0 3901463.0 NaN
已编写的单点计算代码
目前已实现DP1、DP2列的单点位指标计算,代码内容为:
LDFTriangledf['Weighted Average'] =CumulativePaidTriangledf.loc['Total','DP2']/(CumulativePaidTriangledf.loc['Total','DP1'] - CumulativePaidTriangledf.loc['Latest Observation','DP1'])
内容的提问来源于stack exchange,提问作者Devil
相关产品推荐
相关产品推荐

