Pandas - 标题行的绝对值

时间:2016-05-26 11:12:04

标签: python excel pandas

我在阅读一些结构不良的Excel模板时遇到了问题。

我打算让我的进程使用包含4个字段的元数据文件:Filename,Type,Sheet ID和Header row。

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

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

但是,pandas不从header_row获取绝对值,而是(我猜)尝试在它认为是标题之前删除所有空行 - 这意味着数据帧是由模板到模板的异常金额抵消。

如何让pandas以我传递给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行。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

如果我理解正确,excel表如下:

enter image description here

如果我读它:

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

我得到以下内容:

enter image description here

如果我读它:

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

我理解正确(我认为):

enter image description here

那么,也许这是 header skiprows 组合的问题?