从Excel导入多索引数据框

我试图从Excel导入到一个数据框,并保持多索引格式。

这个导入是好的:

def import_cp(cp_sheet_name): xl = pd.ExcelFile('FileNameA.xlsx') df_first = xl.parse(cp_sheet_name) df_second = xl.parse(cp_sheet_name) # there's many more return df_first, df_second df_first = import_cp("Sheet 1") 

Excel格式如下:

 | | Alpha | Bravo | Charlie | |Position| Area | Gain | Area | Gain | Area | Gain | | 1 | 0.5 | 1.1 | 0.5 | 1.1 | 1.7 | 1.6 | | 2 | 0.6 | 1.0 | 0.6 | 1.0 | 1.5 | 1.4 | 

阿尔法布拉沃细胞合并。

当我导入时,我得到:

 ( |Unnamed: 0 Alpha| Unnamed: 2 Bravo| Unnamed: 4 Charlie| 0 |Position Area| Gain Area | Gain Area | 1 | 1 0.5 | 1.17 0.5 | 1.13 0.5 | 2 | 2 0.5 | 1.17 0.5 | 1.13 0.5 | 

我尝试使用header=0但是,这并没有太大的变化和fillna是不理想的,因为我不想要Alpha Alpha Bravo Bravo Charlie Charlie

任何帮助,将不胜感激。

我想你需要添加参数header=[0,1]read_excel读取列的indexMultiIndexindex_col=0读取第一列indexsheetname='sheet1'阅读名单sheet1 。 然后你可以通过rename_axis来重新设置列名( pandas 0.18.0新增function)

 import pandas as pd df = pd.read_excel('test.xlsx', header=[0,1], index_col=0, sheetname='sheet1') print df Alpha Bravo Charlie Position Area Gain Area Gain Area Gain 1 0.5 1.1 0.5 1.1 1.7 1.6 2 0.6 1.0 0.6 1.0 1.5 1.4 df = df.rename_axis((None,None), axis=1) print df Alpha Bravo Charlie Area Gain Area Gain Area Gain 1 0.5 1.1 0.5 1.1 1.7 1.6 2 0.6 1.0 0.6 1.0 1.5 1.4 print df.index Int64Index([1, 2], dtype='int64') print df.columns MultiIndex(levels=[[u'Alpha', u'Bravo', u'Charlie'], [u'Area', u'Gain']], labels=[[0, 0, 1, 1, 2, 2], [0, 1, 0, 1, 0, 1]]) 
Interesting Posts