Pandas:按Model分组基于Rank计算Runtime反向累计求和的实现方法
Pandas分组计算反向累计和解决方案
核心逻辑:你需要的按Model分组、按Rank升序的Runtime反向累计和,可以通过将分组内Runtime序列倒序后做普通累计和,再倒序回原顺序实现,完全匹配你描述的计算规则。
实现步骤
- 先确保每个Model分组内的Rank按升序排列(避免原数据顺序混乱导致结果错误)
- 对每个Model分组的Runtime列做倒序累计和再回正
完整代码
import pandas as pd # 1. 排序:保证每个Model分组内Rank从1到100升序 df = df.sort_values(by=['Model', 'Rank'], ignore_index=True) # 2. 分组计算反向累计和 # 若要直接覆盖原Runtime列,将下方reverse_cumsum_runtime改为Runtime即可 df['reverse_cumsum_runtime'] = df.groupby('Model')['Runtime'].transform( lambda x: x.iloc[::-1].cumsum().iloc[::-1] )
结果验证
以你给出的Model=0.05的前5条Runtime数据为例:
原始Runtime值:[250.5, 253.875, 310.875, 251.375, 277.25]
计算得到的反向累计和结果:[1343.875, 1093.375, 839.5, 528.625, 277.25]
完全符合你要求的计算规则:
- Rank=1对应所有值总和1343.875
- Rank=2对应总和减Rank1值=1093.375
- Rank=5对应仅Rank5的值277.25
内容的提问来源于stack exchange,提问作者apgsov
相关产品推荐
相关产品推荐

