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

Pandas中非迭代填充Order_Price非零值至后续行的方法

Pandas非零值向下填充解决方案

直接用Pandas的矢量化操作就能实现,完全不需要迭代DataFrame,步骤如下:

  • 先将Order_Price中的0值替换为NaN,再使用向前填充(ffill)方法,把非零值向下填充到下一个非零值出现前的所有位置,最终将结果存入新增的Position_Price列。

具体代码示例:

# 方法1:使用mask替换0为NaN后向前填充
df['Position_Price'] = df['Order_Price'].mask(df['Order_Price'] == 0).ffill()

# 方法2:使用where保留非零值,其余为NaN后向前填充
df['Position_Price'] = df['Order_Price'].where(df['Order_Price'] != 0).ffill()

说明

  • mask():将满足Order_Price == 0的元素替换为NaN,保留非零值不变;where()则相反,保留满足Order_Price != 0的元素,其余设为NaN,两者效果等价。
  • ffill():全称forward fill,会用前一个非NaN的值填充当前的NaN位置,直到遇到下一个非NaN值为止,完美匹配你需要的“向下填充直到新非零值出现”的需求。

如果你的DataFrame开头存在连续0值,ffill()会让这些位置保留NaN,若需要填充默认值,可以在ffill()后追加.fillna(默认值)来处理。

内容的提问来源于stack exchange,提问作者Jose Martinez Sobrado

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:45:35