You need to enable JavaScript to run this app. Pandas中groupby结合shift实现STDEPTH列跨CODE取值的问题
优惠活动
大模型
产品
解决方案
定价
更多

Pandas中groupby结合shift实现STDEPTH列跨CODE取值的问题

偏差根源

之前的代码将CODE作为分组键,同KEY下首次出现的不同CODE会被识别为独立分组的起始行,触发fill_value=0的填充逻辑,直接造成你提到的12-14行被错误标记为0值。
如果直接移除分组里的CODE但不处理空值,每个KEY的第一行因为没有前置参考值会返回空值,达不到“KEY切换时对应行STDEPTH填0”的要求;如果把分组里的CODE替换为RPTDATE,同KEY下报告日期切换的行又会被识别为新组,错误触发0填充逻辑,完全偏离需求。

可直接使用的实现代码
df['STDEPTH'] = df.groupby('KEY')['ENDDEPTH'].shift().fillna(0).astype(int)
效果校验
  • 分组逻辑仅以KEY为边界,同KEY下完全忽略CODE、RPTDATE的取值差异,逐行取上一行的ENDDEPTH作为当前行的STDEPTH
  • 每个KEY分组的首行产生的空值统一填充为0,严格匹配KEY切换时的填充规则
  • 你提到的12-14行属于KEY=101下的连续行,不会被分组逻辑截断,STDEPTH值会与同组前序行完全一致,不会出现错误的0值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 07:24:05