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

pandas按用户分组计算日度余额差值并将结果回填至原DataFrame的方法

Pandas 分组计算逐行差值并回填方法

直接使用Pandas内置的分组差分方法即可完成需求,无需手动处理数组对齐问题:

# 逐行计算当前余额减前一日余额的差值,自动对齐原DataFrame索引
df['balance_previous_day'] = df.groupby('user_id')['balance'].diff(periods=1)

注:你的预期输出列名balance_previous_day和数值逻辑不匹配,输出数值实际是「当日余额减前一日余额的差值」,如果需要取前一日的余额,把上述代码中的diff(1)替换为shift(1)即可。


如果你要沿用自己原先用np.diff的实现思路,需要手动给每个分组的差值数组开头补NaN对齐长度,再回填到原表:

import numpy as np

def add_diff_column(group):
    diff_vals = np.diff(group['balance'], 1)
    # 开头补NaN,让差值数组长度和当前分组行数一致
    group['balance_previous_day'] = [np.nan] + diff_vals.tolist()
    return group

df = df.groupby('user_id', group_keys=False).apply(add_diff_column)

两种方案运行后得到的结果都和你给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:15:03