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组合的问题 ?