2017-12-08 2 views
0

Ich habe eine Datendatei, die durch Pipe getrennt ist, aber gelegentlich hat ein leerer Wert keine Daten zwischen zwei Trennzeichen, was dazu führt, dass das Trennzeichen in der entsprechenden Spalte und späteren Spalten platziert wird mit NaN-Werten bevölkert.Lesen von Datendateien ohne Daten zwischen Trennzeichen

Mein Code meine Datenrahmen für die Erstellung von:

for DF_Exec in pd.read_table(ExecSrcFile, sep='|', chunksize=5000, header=1, low_memory=False, na_filter=True, index_col=False): 
    # process data here 

Jede Zeile in der Datei ist 212 Spalten lang, aber ich werde ein Beispiel dafür, was Fälle bieten funktionieren nicht

...|80|strdata|\x00|90.0| |... 

alle diese funktioniert gut. Leerzeichen oder Nullsymbole zwischen Trennzeichen werden problemlos verarbeitet.

...|80|strdata|||strdata|... 

zu 4 Spalten Dies wird Karte, statt 5, die NULL-Werte in der letzten Spalte erwartet verursacht. Die 3. Spalte enthält in diesem Fall nur ein | Zeichen.

Ein Ausschnitt meiner eigentlichen Daten, wo diese Frage auftaucht:

...|0||||||USD|... 

Da die Datei sehr groß ist, würde Ich mag die Lösung zu vermeiden, ist es Linie der Verarbeitung von Zeilenabständen zwischen den Trennzeichen hinzuzufügen. Gibt es eine andere effizientere Option, um mit dieser Art von Problem mit Pandas oder einem anderen Paket umzugehen?

+0

Welche Art von Datei möchten Sie laden? .txt, .csv, .xls, .xlsx, .dat ?? – MattR

+0

Die Datei ist ein riesiger Block von röhrenbegrenzten Text – ividito

Antwort

0

Haben Sie versucht mit pandas.read_csv(ExecSrcFile, sep='|')?

+0

read_csv und read_table sind die gleiche Funktion, wenn Sie das 'sep' Argument ändern, und so haben beide Methoden die gleichen Probleme. – ividito

Verwandte Themen