Ich habe Datendateien mit Listen von Strings, die ISO-formatierte Daten darstellen. Momentan lese ich sie mit:
%Vor%Das sieht ziemlich einfach aus, ist aber lächerlich langsam, wenn man auf riesigen Listen von ~ 25000 Daten arbeitet - & gt; etwa 0,34 Sekunden pro konvertierter Liste. Da ich Tausende solcher Listen habe, suche ich einen schnelleren Weg. Ich konnte jedoch noch keinen finden. Der Dateutil-Parser schneidet noch schlechter ab ...
Das Indizieren / Schneiden scheint schneller zu sein als das von @NPE verwendete Regex:
%Vor% Ich denke, wenn Sie einen Dateiparser wie numpy.genfromtxt
verwenden würden Mit dem Argument converters
und einer schnellen String-Parsing-Methode können Sie eine ganze Datei in weniger als einer halben Sekunde lesen und parsen.
Ich habe die folgende Funktion verwendet, um eine Beispieldatei mit etwa 25000 Zeilen, ISO-Datumszeichenfolgen als Index und 10 Datenspalten zu erstellen:
%Vor%Dann habe ich den folgenden Code verwendet, um die Datei zu analysieren:
%Vor%pandas (basierend auf numpy) hat einen C-basierten Dateiparser, der noch schneller ist:
%Vor%Hier ist eine Möglichkeit, es etwa 3x schneller zu machen.
Die ursprüngliche Version:
%Vor%Die schnellere Version:
%Vor% Dies ist offensichtlich nicht annähernd so flexibel wie strptime()
.
edit: Die Verwendung einer einzelnen Regex zum Extrahieren der Datumskomponenten ist geringfügig schneller:
%Vor%