2016-08-05 23 views
2

zu Pandas habe ich ein Pandas Datenreihe, die einen String formatiert Datum in Form enthält:strptime Funktion Anwenden Serie

2016-01-14 11:39:54

Ich möchte die Zeichenfolge in einen Zeitstempel konvertieren.

Ich bin mit dem apply Methode attemp 'datetime.strptime' der Serie zu jedem Element passieren

date_series = date_string.apply(datetime.strptime, args=('%Y-%m-%d %H:%M:%S'))

Wenn ich den Code ausführen, bekomme ich folgende Fehlermeldung:

strptime() takes exactly 2 arguments (18 given)

meine Fragen sind (1) nehme ich den richtigen Ansatz, (2) warum ist strptime konvertieren meine Argumente in 18 Argumente?

Antwort

3

Verwendung pd.to_datetime:

date_series = pd.to_datetime(date_string) 

Im Allgemeinen ist es am besten, Ihre Termine als Pandas' pd.Timestamp statt Pythons datetime.datetime, wenn Sie Ihre Arbeit in Pandas zu tun. Sie können auch die Time Series/Date functionality documentation überprüfen.

Warum apply nicht funktioniert, wird args nicht als ein Tupel gelesen, sondern als eine Zeichenfolge, die in 17 Zeichen aufgeteilt wird, von denen jedes als ein separates Argument interpretiert wird. Um es als Tupel zu lesen, fügen Sie ein Komma hinzu: args=('%Y-%m-%d %H:%M:%S',).

Dies ist das Standardverhalten in Python. Betrachten Sie das folgende Beispiel:

x = ('a') 
y = ('a',) 
print('x info:', x, type(x)) 
print('y info:', y, type(y)) 

x info: a <class 'str'> 
y info: ('a',) <class 'tuple'>