2016-12-20 60 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)