Python Pandas read_excelparsingPandas 0.18.1和Pandas> 0.19之间的MultiIndex数据框的不同行为

我完全困惑。 可能我想念pandas API的更新。

所以我有这个excel文件

在这里输入图像说明

Pandas 0.18.1我在阅读和parsing文件时没有遇到任何问题。 我用下面的代码,

 import pandas as pd fname = 'SAMPLE_EXCEL_CAUSING_ERROR_IN_PANDAS_0_19_UP.xlsx' pd.read_excel(fname, 'Sheet1', header=[0,1], index=[0,1]) 

它返回了我想要的东西。

[1]:https://i.stack.imgur.com/Muliy.png

最近,我更新了我的软件包,现在我的pandas version 0.20.1 。 但是,当我试图用相同的Excel文件执行相同的代码时,它返回一个错误。 这里是错误消息: ValueError: Length of new names must be 1, got 2

在这里输入图像说明

任何线索我在哪里错过了read_excel的新API? 我完全困惑。 是否有任何解决方法来读取MultiIndex列的excel文件? 我的真实数据有三级索引而不是二级索引。 非常感谢您的任何build议。

PS我不能降级到0.18.1因为我的用户使用0.20.1

UPDATE

奇怪的是,如果我将header设置为header=[1,2]那么它不会抛出任何错误消息。 但是,我的索引得到了错误的级别。 仍然试图解决这个问题的解决方法。

在这里输入图像说明

你可以使你的索引半手动

获取标题

从第二列开始,只取前两行,并从左侧开始填充空单元格

 header = pd.read_excel(fname, 'Sheet1', index=[0], header=None).iloc[:2, 1:].ffill(axis=1) 

获取数据

省略前两行,并将第一列设置为索引

 df = pd.read_excel(fname, 'Sheet1', skiprows=[0,1], index=0, header=None).rename(columns={0: 'A'}).set_index('A') 

MultiIndex

 df.columns=pd.MultiIndex.from_arrays(header.values) 

DF

  BDF CCEEGG A A1 XYZUJK A2 XX YY ZZ UU JJ KK A3 XXX YYY ZZZ UUU JJJ KKK