You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在分组内实现Series Expanding排名?按Category重置递增窗口

分组内计算递增窗口排名(Expanding Rank)

你的问题出在lambda函数中错误引用了全局的df['Value'],导致计算的是整个数据集的全局递增排名,而非分组内的。

正确代码

df['预期输出排名'] = df.groupby('Category')['Value'].transform(
    lambda x: x.expanding(1).rank(ascending=True, method='first')
)

代码说明

  • groupby('Category')['Value']:按Category字段分组,提取每组的Value列
  • transform:将分组内的计算结果映射回原DataFrame的对应行,保证行数与原数据一致
  • x.expanding(1):对每组内的Series创建从第1行开始的递增窗口(窗口范围从当前行向上包含所有同组历史行)
  • .rank(ascending=True, method='first'):在每个递增窗口内计算升序排名,method='first'确保重复值按出现顺序分配排名,避免并列排名干扰结果

运行结果验证

执行后得到的预期输出排名列会和你给出的示例预期结果完全一致:

CategoryValue当前输出排名预期输出排名
A1011
A2022
A3033
B4041
B5052
C6061

内容的提问来源于stack exchange,提问作者greenguy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 04:00:17