Wie konvertieren von string in datetime mit Nullen - python, pandas?
Habe ich eine Serie mit einigen datetimes (als strings) und einige Nullen als 'nan':
import pandas as pd, numpy as np, datetime as dt
df = pd.DataFrame({'Date':['2014-10-20 10:44:31', '2014-10-23 09:33:46', 'nan', '2014-10-01 09:38:45']})
Ich versuche zu konvertieren, diese zu datetime:
df['Date'] = df['Date'].apply(lambda x: dt.datetime.strptime(x, '%Y-%m-%d %H:%M:%S'))
aber ich bekomme die Fehlermeldung:
time data 'nan' does not match format '%Y-%m-%d %H:%M:%S'
Also ich versuchen, diese in eine tatsächliche null-Werte:
df.ix[df['Date'] == 'nan', 'Date'] = np.NaN
und wiederholen:
df['Date'] = df['Date'].apply(lambda x: dt.datetime.strptime(x, '%Y-%m-%d %H:%M:%S'))
aber dann bekomme ich die Fehlermeldung:
werden müssen, Schnur, Schwimmer nicht
Was ist der Schnellste Weg, dieses problem zu lösen?
InformationsquelleAutor Colin O'Brien | 2015-03-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie einfach
to_datetime
und setzenerrors='coerce'
zu handhaben duff Daten:das problem mit dem Aufruf
strptime
ist, dass es ein Fehler ausgelöst, wenn der string, oder "dtype" ist falsch.Wenn du das getan hast dann würde es auch funktionieren:
aber es wird schneller zur Nutzung der eingebauten
to_datetime
eher als Aufrufapply
die im wesentlichen nur loops über Ihre Serie.timings
Sehen wir hier, dass die Verwendung
to_datetime
ist 3X schneller.errors='coerce'
stattcoerce=True
.InformationsquelleAutor EdChum
Ich finde Vermietung pandas die Arbeit zu tun, um zu langsam zu sein auf große dataframes. In einem anderen Beitrag habe ich gelernt, eine Technik, die Geschwindigkeiten dieser sich dramatisch, wenn die Anzahl der eindeutigen Werte, die viel kleiner ist als die Anzahl der Zeilen. (Meine Daten sind in der Regel Aktienkurs-oder trade blotter-Daten). Es baut zuerst ein dict, der Karten, der text stammt Ihre datetime-Objekte, dann gilt das dict zu konvertieren die Spalte der text stammt.
InformationsquelleAutor jdmarino