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

Pandas按用户分组计算DataFrame产量逐期差值问题求助

解决方案

首先请先确保你的DataFrame已经按照User和Timestamp升序排序,避免因为时间顺序混乱导致差值计算错误,随后使用如下代码即可:

# 先按用户+时间排序,保证顺序正确
df = df.sort_values(by=['User', 'Timestamp']).reset_index(drop=True)
# 分组计算差值,空值用当期产量填充
df['Difference'] = df.groupby('User')['Production'].diff().fillna(df['Production'])

运行后得到的Difference列完全符合你的预期结果。

问题原因说明

  1. 你第一次写的groupby('User')['Production'].diff()逻辑本身是正确的,默认计算规则就是「当期值 - 同组前一个值」,但每个分组的第一行没有前序值,返回结果为NaN,你没有对这部分NaN做替换,所以没有得到预期结果。
  2. 后续自定义lambda代码的问题:
    • 差值计算顺序搞反了:你写的x['Production'].shift(+1) - x['Production']是「上一期值减当期值」,和你需要的计算逻辑相反,会得到负数结果
    • 若分组apply后的索引和原表索引没有对齐,也会导致用户切换行的结果匹配错误,用pandas内置的diff方法不需要手动处理索引对齐,稳定性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:48:03