У меня проблема с чтением некоторых плохо структурированных шаблонов excel.Pandas - Абсолютное значение для строки заголовка
Я намерен для моего процесса использовать файл метаданных, содержащий 4 поля: имя файла, тип, идентификатор листа и строку заголовка.
Мой процесс будет читать эти метаданные затем передать его в функцию pd.read_excel
следующим образом:
pd.read_excel(filename, sheetname=sheet_id, header=header_row, skiprows=header_row)
Однако pandas
не принимает абсолютное значение из header_row
, но вместо этого (я угадываю) пытается удалить все заготовки строки до того, что он считает заголовком. Это означает, что фреймворк данных компенсируется необычной суммой, которая варьируется от шаблона к шаблону.
Как получить pandas, чтобы запустить dataframe с абсолютным значением заголовка, который я передаю в функцию 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». Кроме того, объединенные ячейки перед заголовком вызывали странные выходы. Отсортировано сейчас, спасибо за усилия выше! –