2016-12-20 56 views
4

我试图使用pandas read_excel来处理文件。该文件有两列标题,所以我试图使用header关键字参数的multiIndex功能。使用熊猫read_excel时发生错误(header = [0,1])

import pandas as pd, os 

"""data in 2015 MOR Folder""" 
filename = 'MOR-JANUARY 2015.xlsx' 

print(os.path.isfile(filename)) 

df1 = pd.read_excel(filename, header=[0,1], sheetname='MOR') 

print(df1) 

错误我得到的是ValueError异常:新名称的长度必须1,得了2.文件是在这个谷歌驱动器文件夹https://drive.google.com/drive/folders/0B0ynKIVAlSgidFFySWJoeFByMDQ?usp=sharing 我试图按照张贴在这里 Read excel sheet with multiple header using Pandas

+0

该错误可能是特定的版本,似乎是一项正在进行的工作 - [GitHub上(https://github.com/pandas-dev/pandas/issues/15133) – arthuritus

回答

2
解决方案

我可能会误解,但我不认为大熊猫处理解析excel行,其中有合并单元格。所以在第一行中,合并的单元格被解析为大部分为空单元格。你需要很好地重复他们才能正确行事。这是什么激励下面的ffill。如果您可以提前控制Excel工作簿,并且可以使用您的代码。


我的解决方案

它不漂亮,但它会完成它。

filename = 'MOR-JANUARY 2015.xlsx' 
df1 = pd.read_excel(filename, sheetname='MOR', header=None) 

vals = df1.values 

mux = pd.MultiIndex.from_arrays(df1.ffill(1).values[:2, 1:], names=[None, 'DATE']) 

df1 = pd.DataFrame(df1.values[2:, 1:], df1.values[2:, 0], mux)