使用Pandas阅读带有多个标题的Excel表格

我有一个Excel头像多个头像:

_________________________________________________________________________ ____|_____| Header1 | Header2 | Header3 | ColX|ColY |ColA|ColB|ColC|ColD||ColD|ColE|ColF|ColG||ColH|ColI|ColJ|ColDK| 1 | ds | 5 | 6 |9 |10 | ....................................... 2 | dh | .......................................................... 3 | ge | .......................................................... 4 | ew | .......................................................... 5 | er | .......................................................... 

现在,在这里你可以看到前两列没有标题,而是其他列有标题Header1,Header2和Header3。 所以我想阅读这张表格,并将其与其他具有相似结构的表格合并。

我想将它合并到第一列“ColX”上。 现在我正在这样做:

 import pandas as pd totalMergedSheet = pd.DataFrame([1,2,3,4,5], columns=['ColX']) file = pd.ExcelFile('ExcelFile.xlsx') for i in range (1, len(file.sheet_names)): df1 = file.parse(file.sheet_names[i-1]) df2 = file.parse(file.sheet_names[i]) newMergedSheet = pd.merge(df1, df2, on='ColX') totalMergedSheet = pd.merge(totalMergedSheet, newMergedSheet, on='ColX') 

但我不知道它的正确阅读列,我想不会以我想要的方式返回结果。 所以,我想要得到的框架应该是这样的:

 ________________________________________________________________________________________________________ ____|_____| Header1 | Header2 | Header3 | Header4 | Header5 | ColX|ColY |ColA|ColB|ColC|ColD||ColD|ColE|ColF|ColG||ColH|ColI|ColJ|ColK| ColL|ColM|ColN|ColO||ColP|ColQ|ColR|ColS| 1 | ds | 5 | 6 |9 |10 | .................................................................................. 2 | dh | ................................................................................... 3 | ge | .................................................................................... 4 | ew | ................................................................................... 5 | er | ...................................................................................... 

任何build议,请。 谢谢。

pandas已经有了一个函数,可以读取整个Excel电子表格,所以你不需要手动分析/合并每个表格。 看看pandas.read_excel() 。 它不仅可以让你在一行中读取一个Excel文件,它还提供了选项来帮助你解决你遇到的问题。

既然你有子列,你要找的是MultiIndexing 。 默认情况下,pandas将读取顶行作为唯一的标题行。 您可以将headerparameter passing到pandas.read_excel() ,该文件指示将多less行用作头文件。 在你的特定情况下,你需要header=[0, 1] ,表示前两行。 你也可能有多个工作表,所以你也可以传递sheetname=None (这告诉它遍历所有工作表)。 该命令将是:

 df_dict = pandas.read_excel('ExcelFile.xlsx', header=[0, 1], sheetname=None) 

这将返回一个字典,其中键是表名称,值是每个工作表的DataFrame。 如果你想把它全部折叠成一个DataFrame,你可以简单地使用pandas.concat:

 df = pandas.concat(df_dict.values(), axis=0)