1
我在閱讀一些結構不良的excel模板時遇到了問題。熊貓 - 標題行的絕對值
我打算使用包含4個字段的元數據文件:文件名,類型,工作表ID和標題行。
我的過程中會讀取這些元數據,然後將它傳遞給pd.read_excel
功能,像這樣:
pd.read_excel(filename, sheetname=sheet_id, header=header_row, skiprows=header_row)
然而,pandas
不會header_row
取絕對值,而是(我猜)試圖移除所有空白在它認爲是標題之前的行 - 這意味着數據框的偏移量會因模板而異。
如何讓大熊貓開始數據幀,並將其傳入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行。
任何幫助表示讚賞!
認爲你是對的:看起來有'header'和'skiprows'的衝突。同樣,標題之前的合併單元格導致了奇怪的輸出。現在排序,感謝上面的努力! –