从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
读取列的index
到MultiIndex
, index_col=0
读取第一列index
和sheetname='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]])