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

Pandas按ID分组基于Value列计算Final_Value列的实现方法

Pandas实现分组计算Final_Value的方法

你可以用groupby配合shift方法实现需求,核心逻辑是利用shift(-1)取同组下一行的Value做差值,最后把每组最后一行的缺失值替换为自身Value即可。

完整实现代码

1. 构造示例数据

import pandas as pd

data = {
    'ID': [9560, 9560, 9712, 9712, 9920],
    'Date': ['07/03/2021', '03/03/2021', '12/15/2021', '08/30/2021', '04/11/2021'],
    'Value': [25, 20, 15, 10, 5]
}
df = pd.DataFrame(data)

2. 核心计算逻辑

如果你的数据已经按分组内需要的顺序排好,可以直接执行以下代码:

# 计算当前行与同组下一行的Value差值
df['Final_Value'] = df['Value'] - df.groupby('ID')['Value'].shift(-1)
# 每组最后一行的差值为NaN,替换为自身Value
df['Final_Value'] = df['Final_Value'].fillna(df['Value']).astype(int)

3. 可选:分组内按日期排序

如果需要先按日期倒序排列同组的行,先执行排序逻辑再做计算:

# 转换日期格式
df['Date'] = pd.to_datetime(df['Date'], format='%m/%d/%Y')
# 按ID升序、日期降序排序
df = df.sort_values(['ID', 'Date'], ascending=[True, False]).reset_index(drop=True)

输出结果验证

运行后得到的df和预期结果完全一致:

ID       Date  Value  Final_Value
0  9560 2021-07-03     25            5
1  9560 2021-03-03     20           20
2  9712 2021-12-15     15            5
3  9712 2021-08-30     10           10
4  9920 2021-04-11      5            5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:45:03