Ich habe ein Problem beim Lesen einiger schlecht strukturierte Excel-Vorlagen.Pandas - Absoluter Wert für Kopfzeile
Ich beabsichtige, für meinen Prozess eine Metadatendatei zu verwenden, die 4 Felder enthält: Dateiname, Typ, Blatt-ID und Kopfzeile.
Mein Prozess diese Metadaten dann lesen Sie es auf die wie so pd.read_excel
Funktion übergeben:
pd.read_excel(filename, sheetname=sheet_id, header=header_row, skiprows=header_row)
Allerdings ist pandas
nicht den absoluten Wert von header_row
nehmen, sondern (ich vermute) versucht, alle leer zu entfernen Zeilen vor dem, was es als Header betrachtet - Dies bedeutet, dass der Datenrahmen um einen ungewöhnlichen Betrag versetzt wird, der von Vorlage zu Vorlage variiert.
Wie bekomme ich Pandas, um den Datenrahmen mit dem absoluten Wert der Kopfzeile zu starten, die ich in die pd.read_excel
Funktion übergebe?
Beispielcode:
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
dies weiter zu markieren, wenn ich zu entfernen:
... header=header_row, skiprows=header_row)
ich die folgende Ausgabe:
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
Beachten Sie, dass Header als Zeile angezeigt werden 4, ist es tatsächlich Zeile 7 auf dem Blatt.
Jede Hilfe wird geschätzt!
Denken Sie, dass Sie Recht haben: Es scheint, dass es einen Konflikt von "Header" und "skiprows" gab. Zusammengefügte Zellen vor dem Header verursachten außerdem seltsame Ausgaben. Sortiert jetzt, danke für die obigen Bemühungen! –