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

Pandas多层索引DataFrame按列将零值替换为分组内最后非零值

多层索引DataFrame分组填充零值最简实现

无需自定义循环或函数,仅用pandas原生链式操作即可完成需求,核心代码仅1行:

processed_df = df.mask(df == 0).groupby(level=0).ffill().fillna(0)

逻辑说明

  • df.mask(df == 0):将所有值为0的单元格替换为NaN,标记为待填充位置
  • .groupby(level=0):按多层索引的第一层级(即示例中外层的0、1分组)拆分数据
  • .ffill():对每个分组独立执行向前填充,自动取同列上方最后一个非空(原非零)值填充下方空值,自动覆盖到分组末尾
  • .fillna(0):将分组开头尚未出现非零值位置的空值还原为0,匹配示例中分组首行全0的预期结果

该实现为pandas原生向量化运算,性能远高于自定义apply或逐行循环写法,数据量较大时效率优势明显,执行后输出结果和给出的预期效果完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:48:17