我在阅读一些结构不良的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行。
任何帮助表示赞赏!