2016-04-08 6 views
0

Ich importiere eine Web-Log-Text-Datei in Python mit Pandas. Python liest die Header, hat jedoch den Text "Fields:" als Überschrift verwendet und am Ende eine weitere Spalte mit Leerzeichen (NaNs) hinzugefügt. Wie kann ich verhindern, dass dieser Text als Spaltenüberschrift verwendet wird? mein CodeWie Sie Text als Spaltenüberschrift mit Python übersprungen werden

hier:

arr = pd.read_table("path", skiprows=3, delim_whitespace=True,  na_values=True) 

Hier ist der Anfang der Datei:

Software: Microsoft Internet Information Services 7.5

Version: 1.0

Datum: 2014- 08-01 00:00:25

Felder: Datum Uhrzeit

2014.08.01 00.00.25 ...

Ergebnis ist, dass ‚Fields‘ als Spaltenüberschrift und eine Säule voller NaN-Werte für die Spalte ‚Zeit‘ wird erstellt verwendet wird.

Antwort

1

Sie können es read_table zweimal tun aufrufen.

# reads the forth line into 1x1 df being a string, 
# then splits it and skips the first field: 
col_names = pd.read_table('path', skiprows=3, nrows=1, header=None).iloc[0,0].split()[1:] 
# reads the actual data: 
df = pd.read_table('path', sep=' ', skiprows=4, names=col_names) 

Wenn Sie bereits die Namen der Spalten kennen (. ZB date und time), dann ist es noch einfacher:

df = pd.read_table('path', sep=' ', skiprows=4, names = ['date', 'time']) 
1

Ich glaube, Sie möchten skiprows = 4 und header = None

+0

Danke, ich habe das Problem zu umgehen und die Spaltenüberschriften hinzugefügt zurück in Verwendung diese qanda: http://stackoverflow.com/questions/17018638/assigning-column-names-from-a-list-to-a-table Aber sicherlich gibt es einen besseren Weg, anstatt es den falschen Text zu lesen – W4K1NG

+0

Oh ja, Ich habe deine Frage nicht verstanden. Sie sollten nur die Datei editieren und '' Fields: '' durch '' '' ersetzen (das können Sie in Ihrem Python-Skript mit 'replace' tun) – maxymoo

Verwandte Themen