Wie konvertiere ich die folgende Zeichenfolge in ein Datetime-Objekt?
"Jun 1 2005 1:33PM"
Wie konvertiere ich die folgende Zeichenfolge in ein Datetime-Objekt?
"Jun 1 2005 1:33PM"
Sie können sich auch informieren über dateparser
dateparser
bietet Module zum einfachen Parsen lokalisierter Daten in fast String-Formaten zu analysieren, die häufig auf Webseiten zu finden sind.
Installieren:
$ pip install dateparser
Dies ist meines Erachtens die einfachste Methode, um Daten zu analysieren.
Der einfachste Weg ist die Verwendung der
dateparser.parse
Funktion, die den größten Teil der Funktionalität des Moduls umschließt.
Beispiel-Code:
import dateparser
t1 = 'Jun 1 2005 1:33PM'
t2 = 'Aug 28 1999 12:00AM'
dt1 = dateparser.parse(t1)
dt2 = dateparser.parse(t2)
print(dt1)
print(dt2)
Ausgabe:
2005-06-01 13:33:00
1999-08-28 00:00:00
Sie können verwenden einfach_datieren um es einfach zu machen:
import date_converter
converted_date = date_converter.string_to_datetime('Jun 1 2005 1:33PM', '%b %d %Y %I:%M%p')
Wenn Sie nur das Datumsformat wünschen, können Sie es manuell konvertieren, indem Sie die einzelnen Felder wie folgt übergeben:
>>> import datetime
>>> date = datetime.date(int('2017'),int('12'),int('21'))
>>> date
datetime.date(2017, 12, 21)
>>> type(date)
<type 'datetime.date'>
Sie können Ihre Split-String-Werte übergeben, um sie in den Datumstyp zu konvertieren:
selected_month_rec = '2017-09-01'
date_formate = datetime.date(int(selected_month_rec.split('-')[0]),int(selected_month_rec.split('-')[1]),int(selected_month_rec.split('-')[2]))
Sie erhalten den Ergebniswert im Datumsformat.
Es scheint, dass die Verwendung von pandas Zeitstempel ist die schnellste
import pandas as pd
N = 1000
l = ['Jun 1 2005 1:33PM'] * N
list(pd.to_datetime(l, format=format))
%timeit _ = list(pd.to_datetime(l, format=format))
1.58 ms ± 21.6 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
Andere Lösungen
from datetime import datetime
%timeit _ = list(map(lambda x: datetime.strptime(x, format), l))
9.41 ms ± 95.7 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
from dateutil.parser import parse
%timeit _ = list(map(lambda x: parse(x), l))
73.8 ms ± 1.14 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
Wenn es sich um eine ISO8601-Zeichenkette handelt, verwenden Sie bitte csio8601
import ciso8601
l = ['2014-01-09'] * N
%timeit _ = list(map(lambda x: ciso8601.parse_datetime(x), l))
186 µs ± 4.13 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.