2017-01-25 4 views
-1

ich eine Excel-Datei ‚test.xls‘ Datei, die ich in wie folgt lesen:Python lesen Exel Dateifehler beginnend Nullen Fehler

df= pd.read_excel('test.xls',sep='\t',header=1) 

Ich habe df und gefunden gibt es eine Spalte zip_code die zip enthalten Code wie 00051, 00123, aber die erste 0 wurde abgeschnitten, während das System in der Excel-Datei einliest.

Diese Spalte wird also 51, 123 sein. Wie kann ich beim Lesen der Datei die ersten Nullen intakt halten? Vielen Dank. Gefundene Lösung wie ich unten gepostet habe.

+1

es Text umgewandelt integer, überprüfen Sie, wenn Sie können in read_excel deklariert den Datentyp in Spalten. Oder verwenden Sie String-Formatierung, um ganze Zahlen in Zeichenfolgen mit führenden Nullen zu konvertieren. – furas

+0

Verwenden Sie ein Wörterbuch, um 'dtype' der betrachteten Spalte festzulegen – MMF

+0

Da das OP die Antwort in der verknüpften Frage gefunden hat, sollte es als Duplikat von [Python pandas: Wie spezifiziert man Datentypen beim Lesen einer Excel-Datei?] Geschlossen werden (http://stackoverflow.com/questions/32591466/python-pandas-how-to-specify-data-types-when-reading-an-excel-file) – Tony

Antwort

0

Fand eine Antwort hier:

Python pandas: how to specify data types when reading an Excel file?:

Sie haben soeben Konverter angeben. Ich habe eine Excel-Tabelle mit der folgenden Struktur:

names ages 
    bob  05 
    tom  4 
    suzy 3 

Wo die „Alter“ Spalte als String formatiert ist. So laden:

Import Pandas als pd

df =  pd.read_excel('Book1.xlsx',sheetname='Sheet1',header=0,converters={'names':str,'ages':str}) 
df 
     names ages 
    0 bob 05 
    1 tom 4 
    2 suzy 3 

Dank @tnknepp

+0

Ich habe den obigen Konverter versucht, aber immer noch das Problem. Ich überprüfte die ursprüngliche Excel-Datei, die Postleitzahl wurde als Postleitzahlformat gespeichert. Ich fand endlich, dass das funktioniert: http://stackoverflow.com/questions/33137686/python-loading-zip-codes-into-a-dataframe-as-strings df ['Postleitzahl'] = df ['Postleitzahl'] .astype (str) .str.zfill (5) – newleaf

+0

Diese Methode funktioniert – newleaf