pandas – 标题行的绝对值

我有一个问题,阅读一些结构不良的Excel模板。

我打算让我的stream程使用包含4个字段的元数据文件:文件名,types,工作表ID和标题行。

我的进程将读取这个元数据,然后将其传递给pd.read_excel函数,如下所示:

 pd.read_excel(filename, sheetname=sheet_id, header=header_row, skiprows=header_row) 

然而, pandas并不是从header_row获取绝对值,而是(我猜测)试图删除它认为是标题之前的所有空白行 – 这意味着数据框被偏移了一个不同的数量,从模板到模板。

我如何让大pandas用我传入pd.read_excel函数的头文件的绝对值来启动数据pd.read_excel

示例代码:

 import pandas as pd from os.path import join, dirname, abspath def read_worksheet(filename, sheet_id, header_row): df = pd.read_excel(filename, sheetname=sheet_id, header=header_row,skiprows=header_row) return df if __name__=='__main__': meta_filename='document_meta_new.xlsx' output_filename='output.xls' meta_df = read_worksheet(meta_filename,0,0) master_dict={} for row in range(len(meta_df)): filename = meta_df['Filename'][row] sheet = int(meta_df['Sheet ID (zero indexed)'][row]) type = meta_df['Type'][row] header = meta_df['Header row'][row] filepath = join(dirname(dirname(abspath(__file__))),'etlf_pattern','input_docs', filename) df = read_worksheet(filepath, sheet, header) # key = str(filename) + '||' + str(type) key = str(filename) + '||' + str(sheet) master_dict[key] = df print master_dict 

要进一步突出显示,如果我删除:

 ... header=header_row, skiprows=header_row) 

我得到以下输出:

  Unnamed: 13 Unnamed: 14 0 NaN NaN 1 NaN NaN 2 NaN NaN 3 NaN NaN 4 Standard DD Attribute Name Column Name 5 PRTY_ID CUSTOMER_ID 6 INDV_NM_PRFX_TXT CUSTOMER_TITLE 

请注意,标题显示为第4行,实际上是第7行。

任何帮助感激!

如果我理解正确,Excel表格看起来像:

在这里输入图像说明

如果我读它像:

 df = pd.read_excel( 'tab.xlsx', sheetname='Sheet1' ) 

我得到以下内容:

在这里输入图像说明

如果我读它像:

 df = pd.read_excel( 'tab.xlsx', sheetname='Sheet1', header=7 ) 

我知道了(我认为):

在这里输入图像说明

所以,也许这是一个标题skiprows组合的问题