如何为数学竞赛数据集生成历史加权Competitor新列?
求助:大型数学竞赛数据集高效生成Competitor列
原始数据集(按日期降序排列)
Race_ID Date Student_ID Rank 1 1/1/2023 1 3 1 1/1/2023 2 2 1 1/1/2023 3 1 1 1/1/2023 4 4 2 11/9/2022 1 2 2 11/9/2022 2 3 2 11/9/2022 3 1 3 17/4/2022 5 4 3 17/4/2022 2 1 3 17/4/2022 3 2 3 17/4/2022 4 3 4 1/3/2022 1 1 4 1/3/2022 2 2 5 1/1/2021 1 2 5 1/1/2021 2 3 5 1/1/2021 3 1
需求说明
需要为数据集新增名为Competitor的列,该列基于历史竞赛的近期加权排名差计算,公式如下:
1/(当前竞赛日期 - 历史竞赛t-1日期) ×(该学生在t-1竞赛的排名 - 当前竞赛其他学生在t-1竞赛的排名之和)
期望生成结果示例
Race_ID Date Student_ID Rank Competitor 1 1/1/2023 1 3 -0.003268 =(1/112)((2-3)+(2-1))+(1/259)(0)+(1/306)(1-2)+(1/730)((2-3)+(2-1)) 1 1/1/2023 2 2 0.03150884 1 1/1/2023 3 1 -0.0308953 1 1/1/2023 4 4 0.01158301 2 11/9/2022 1 2 -0.0051546 2 11/9/2022 2 3 0.00320629 2 11/9/2022 3 1 -0.0048544 3 17/4/2022 5 4 0 3 17/4/2022 2 1 0.02764602 3 17/4/2022 3 2 -0.0063694 3 17/4/2022 4 3 0 4 1/3/2022 1 1 -0.0023585 4 1/3/2022 2 2 0.00235849 5 1/1/2021 1 2 0 5 1/1/2021 2 3 0 5 1/1/2021 3 1 0
计算逻辑示例
以第一条数据(Race_ID=1,Student_ID=1)为例:
- 112是当前竞赛日期
1/1/2023与历史竞赛11/9/2022的天数差 - 最终值
-0.003268的计算过程:(1/112)((2-3)+(2-1))+(1/259)(0)+(1/306)(1-2)+(1/730)((2-3)+(2-1))
目前不清楚针对大型数据集的高效实现方法,寻求技术帮助。
内容的提问来源于Stack Exchange,提问作者Apook
相关产品推荐
相关产品推荐

