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

按SCU_KEY、PRODUCT分组后有条件对REVENUE_STATUS_FLAG的NaN执行ffill填充

问题需求

我们需要仅对REVENUE_STATUS_FLAG列执行前向填充(ffill):只填充该列非空值之后出现的NaN,且填充操作必须严格按SCU_KEY(企业标识)和PRODUCT(产品类型)分组执行,不允许跨分组污染填充值。

原有代码问题说明

你原来的逐行判断逻辑存在缺陷:全局执行fillna(method='ffill')时本身就会跨分组填充,即使加了条件判断也无法避免不同分组的值互相影响,且写法冗余易出错。

优化后正确代码

pandas的groupby天然支持分组内单独执行变换操作,刚好匹配你的需求,一行代码即可实现效果:

# 按SCU_KEY、PRODUCT分组后,每组内单独对REVENUE_STATUS_FLAG做前向填充
df_SR5['REVENUE_STATUS_FLAG'] = df_SR5.groupby(['SCU_KEY', 'PRODUCT'])['REVENUE_STATUS_FLAG'].ffill()
效果验证

用你提供的输入示例执行上述代码后,输出结果和你给出的预期完全一致:

year  SCU_KEY PRODUCT  REVENUE_STATUS_FLAG
0  2019-02        3     HCM                  1.0
1  2019-03        3     HCM                  1.0
2  2019-04        3     HCM                  1.0
3  2019-05        3     HCM                  1.0
4  2018-03        4     HCM                  NaN
5  2018-04        4     HCM                  0.0
6  2018-05        4     HCM                  0.0
7  2017-04        4     EPM                  NaN
8  2017-05        4     EPM                  NaN
9  2019-06        5     SCM                  NaN
10 2019-07        5     SCM                  0.0
11 2019-08        5     SCM                  0.0

该写法逻辑清晰,相比逐行判断执行效率更高,尤其适合大数据量的时间序列数据集。

内容的提问来源于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.26 09:06:02