Wie man DataFrame-Spalte in Datetime in Pandas konvertiert

Jinku Hu 3 Januar 2023
  1. Pandas to_datetime Funktion zur Konvertierung der DataFrame-Spalte in datetime
  2. DataFrame apply Methode zur Konvertierung der DataFrame-Spalte in Datetime
  3. Methoden zur Konvertierung von DataFrame-Spalte in Datetime-Performance-Vergleich
Wie man DataFrame-Spalte in Datetime in Pandas konvertiert

Wir werden Methoden vorstellen, um Pandas DataFrame Spalte in Python datetime zu konvertieren.

  • Pandas to_datetime() Funktion
  • DataFrame apply Methode zur Bearbeitung von Elementen in der Spalte

Wir werden in diesem Artikel unten den gleichen DataFrame verwenden.

>>> from datetime import datetime, timedelta
>>> from pandas import DataFrame
>>> df = DataFrame.from_items(
    [('Alfa', [1, 2, 3]), 
     ('Bravo', [4, 5, 6]), 
     ('Datetime', [datetime.strftime(datetime.now()-timedelta(days=_), "%m/%d/%Y, %H:%M:%S") for _ in range(3)])], 
    orient='index', 
    columns=['A', 'B', 'C']).T
>>> df
  Alfa Bravo              Datetime
A    1     4  12/07/2019, 14:08:55
B    2     5  12/06/2019, 14:08:55
C    3     6  12/05/2019, 14:08:55

Pandas to_datetime Funktion zur Konvertierung der DataFrame-Spalte in datetime

Pandas to_datetime Funktion konvertiert das angegebene Argument in datetime.

pandas.to_datetime(param, format="")

Das Format gibt das Muster der datetime-Zeichenkette an. Das gleiche gilt für das Format in stftime oder strptime im Python datetime Modul.

>>> df
  Alfa Bravo              Datetime
A    1     4  12/07/2019, 14:08:55
B    2     5  12/06/2019, 14:08:55
C    3     6  12/05/2019, 14:08:55
>>> df['Datetime'] = pd.to_datetime(df['Datetime'], format="%m/%d/%Y, %H:%M:%S")
>>> df
  Alfa Bravo            Datetime
A    1     4 2019-12-07 14:08:55
B    2     5 2019-12-06 14:08:55
C    3     6 2019-12-05 14:08:55

Die to_datetime() Funktion modifiziert die DataFrame Daten nicht an Ort und Stelle, daher müssen wir die zurückgegebenen Pandas Series der spezifischen DataFrame Spalte zuweisen.

Die to_datetime() Funktion ist schlau, in Datetime zu konvertieren

Die to_datetime() Funktion könnte die Konvertierung zu datetime auf eine intelligente Art und Weise durchführen, ohne den datetime Formatstring zu übergeben. Sie wird das String-Muster automatisch und intelligent finden.

>>> df['Datetime'] = pd.to_datetime(df['Datetime'])
>>> df
  Alfa Bravo            Datetime
A    1     4 2019-12-07 14:08:55
B    2     5 2019-12-06 14:08:55
C    3     6 2019-12-05 14:08:55
Warnung

Obwohl to_datetime seine Arbeit erledigen könnte, ohne das format intelligent anzugeben, ist die Konvertierungsgeschwindigkeit viel geringer als die, wenn das format angegeben wird.

Wir koennten die Option infer_datetime_format von to_datetime auf True setzen, um die Konvertierung in einen schnelleren Modus zu schalten, wenn das Format des datetime-Strings ohne Angabe des format-Strings hergeleitet werden koennte.

Es könnte die Parsing-Geschwindigkeit um 5~6 mal erhöhen.

DataFrame apply Methode zur Konvertierung der DataFrame-Spalte in Datetime

apply(func, *args, **kwds)

Die Methode apply von DataFrame wendet die Funktion func auf jede Spalte oder Zeile an.

Wir könnten der Einfachheit halber die Funktion lambda an Stelle von func verwenden.

>>> df['Datetime'] = df['Datetime'].apply(lambda _: datetime.strptime(_,"%m/%d/%Y, %H:%M:%S"))
		   
>>> df
		   
  Alfa Bravo            Datetime
A    1     4 2019-12-07 14:44:35
B    2     5 2019-12-06 14:44:35
C    3     6 2019-12-05 14:44:35

Methoden zur Konvertierung von DataFrame-Spalte in Datetime-Performance-Vergleich

Lassen Sie uns timeit verwenden, um die Timing-Leistung der beiden in diesem Artikel vorgestellten Methoden zu vergleichen.

In [1]: %timeit pd.to_datetime(df['Datetime'], format="%m/%d/%Y, %H:%M:%S")
452 µs ± 85.3 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [2]: %timeit df['Datetime'].apply(lambda _: datetime.strptime(_,"%m/%d/%Y, %H:%M:%S"))
377 µs ± 58.5 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

Die apply Methode ist sogar etwas besser als Pandas native to_datetime Methode, mit etwa 80% der Ausführungszeit der to_datetime Funktion.

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Verwandter Artikel - Pandas DataFrame

Verwandter Artikel - Pandas DataFrame Column

Verwandter Artikel - Python DateTime