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

pd.read_excel()读取单层MultiIndex时异常问题咨询

问题:读取带多层索引的Excel文件时索引解析异常

最小可复现代码

import pandas as pd

I = range(2)
C = range(2)

mi_i = pd.MultiIndex.from_product([I], names=['i'])
mi_c = pd.MultiIndex.from_product([C], names=['c'])

df = pd.DataFrame(0, index=mi_i, columns=mi_c)

df.to_excel('df.xlsx')

df_in = pd.read_excel('df.xlsx', index_col=0, header=0)

预期与实际结果

  • 原始DataFrame df 的输出:
c  0  1
i      
0  0  0
1  0  0 
  • 读取Excel后得到的df_in异常结果:
0    1
c    
i  NaN  NaN    
0  0.0  0.0
1  0.0  0.0
解决方案

问题核心是读取时未正确识别列的多层索引:

  • 写入Excel时,多层列索引会被拆分为两行(第一行是索引名c,第二行是索引值0、1)
  • 设置header=0仅取第一行作为表头,导致第二行的索引值被误判为数据行,同时原始行索引也被错误解析。

修正方式是读取时指定header=[0,1],告知pandas用前两行构建列的多层索引:

df_in = pd.read_excel('df.xlsx', index_col=0, header=[0,1])

执行后df_in的输出将与原始df完全一致:

c  0  1
i      
0  0  0
1  0  0

若要进一步避免Excel合并单元格可能带来的解析问题,写入时可添加merge_cells=False参数:

df.to_excel('df.xlsx', merge_cells=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:32:02