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

Pandas读取Excel生成MultiIndex时首合并单元格出现NaN值问题

问题诱因
  • pandas 读取 Excel 时的默认逻辑是仅在合并单元格的左上角位置存储实际值,合并范围内的其余单元格都会被设为 NaN。
  • 你看到的「A2及之后的合并单元格加载正常」是 MultiIndex 的默认展示特性:相同的上层索引值会被自动隐藏,并非实际不存在 NaN。
  • 常规fillna(method="ffill")方法无法直接处理 MultiIndex,因为该方法默认仅作用于 DataFrame 的值列,不会修改索引对象。
解决方案

你可以通过「重置索引-填充空值-恢复索引」的流程批量处理所有sheet的DataFrame,参考代码如下:

processed_data = {}
for sheet_id, raw_df in dataframes.items():
    # 把多级索引转为普通列
    df_reset = raw_df.reset_index()
    # 对对应索引列做前向填充补全合并单元格空值,这里对应你原来的前两列索引需要填充
    df_reset[['level_0', 'level_1']] = df_reset[['level_0', 'level_1']].ffill()
    # 重新设置回原来的三级索引结构
    processed_df = df_reset.set_index(['level_0', 'level_1', 'level_2'])
    # 可选:修改索引名匹配实际业务含义
    # processed_df.index.names = ["Header1", "H2", "H3"]
    processed_data[sheet_id] = processed_df

处理完成后,processed_data中存储的就是索引完全补全的 DataFrame,符合 Excel 中合并单元格的实际取值逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:57:01