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

Pandas按ID分组计算7天排名变化新增delta_rank_7列实现问题

实现方法

你之前的代码没有按id分组,会将全表所有行统一计算差值,不符合按id单独统计的需求,按以下步骤实现即可:

步骤1:数据预处理

首先要确保日期格式正确,且每个id的记录按时间顺序排列:

import pandas as pd

# 导入数据集
df = pd.read_csv('https://raw.githubusercontent.com/amanaroratc/hello-world/master/test_df.csv')

# 转换date列为日期格式,避免排序异常
df['date'] = pd.to_datetime(df['date'])

# 按id、日期升序排序,保证每个id的记录按时间先后排列
df = df.sort_values(by=['id', 'date']).reset_index(drop=True)

步骤2:计算7天排名差值

如果你的数据是每个id每天都有1条记录,直接按id分组后对rank列做7阶差分即可,前7条数据会自动返回NaN,符合你的要求:

df['delta_rank_7'] = df.groupby('id')['rank'].diff(periods=7)

可选:严格按自然日7天间隔计算

如果部分id存在缺号、单日无数据的情况,需要严格计算自然日7天前的排名差,可以用时间偏移的方式实现:

# 将日期设为索引
df = df.set_index('date')
# 按id分组,获取每个id7天前的排名
df['rank_7d_ago'] = df.groupby('id')['rank'].shift(freq='7D')
# 计算差值
df['delta_rank_7'] = df['rank'] - df['rank_7d_ago']
# 恢复普通列结构
df = df.reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:06:02