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

Pandas按条件分组取OPTY_CLOSE_DATE最大值生成END_DATE列问题咨询

问题原因

原代码的groupby('SCU_KEY')['OPTY_CLOSE_DATE'].max()返回的是长度等于唯一SCU_KEY数量、以SCU_KEY为索引的聚合序列,和原DataFrame的行索引无法对齐,赋值后除索引碰巧匹配的行外,其余都会得到错误的NaN值,不符合预期。

仅处理HCM产品的修正代码

df_5['END_DATE'] = df_5[df_5['PRODUCT'] == 'HCM'].groupby('SCU_KEY')['OPTY_CLOSE_DATE'].transform('max')

该写法通过transform方法实现分组聚合结果的行级对齐:分组后会给每个HCM产品行返回对应SCU_KEY下的最大OPTY_CLOSE_DATE,非HCM产品的行自动填充为NaN,完全符合你的预期结果:

  • SCU_KEY等于3的HCM行END_DATE值统一为2020-04-15
  • SCU_KEY为314、315的HCM行END_DATE值统一为2019-02-05
  • SCU_KEY为316的行中仅HCM产品行填充2020-09-24,EPM产品行保留NaN

支持所有产品的通用代码

如果需要给所有产品都按各自SCU_KEY分组计算最大关闭日期,使用如下代码即可:

df_5['END_DATE'] = df_5.groupby(['PRODUCT', 'SCU_KEY'])['OPTY_CLOSE_DATE'].transform('max')

该代码按「产品+SCU_KEY」双维度分组,每个产品的每个SCU_KEY都会独立计算最大OPTY_CLOSE_DATE,填充到对应行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:06:05