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
相关产品推荐
相关产品推荐

