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])
它返回了我想要的东西。
最近,我更新了我的软件包,现在我的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