Comment convertir la colonne DataFrame en date-heure dans Pandas

Jinku Hu 30 janvier 2023
  1. Fonction Pandas to_datetime pour convertir la colonne DataFrame en datetime
  2. DataFrame apply Méthode pour convertir une colonne de DataFrame en Datetime
  3. Méthodes de conversion des colonnes de DataFrame en comparaison de performance de date et heure
Comment convertir la colonne DataFrame en date-heure dans Pandas

Nous introduirons des méthodes pour convertir la colonne Pandas DataFrame en Python datetime.

  • Fonction Pandas to_datetime().
  • Méthode DataFrame apply pour opérer sur les éléments en colonne

Nous utiliserons le même DataFrame ci-dessous dans cet article.

>>> 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

Fonction Pandas to_datetime pour convertir la colonne DataFrame en datetime

Fonction Pandas to_datetime convertit l’argument donné en datetime.

pandas.to_datetime(param, format="")

Le format spécifie le modèle de la chaîne datetime. C’est la même chose avec le format dans stftime ou strptime dans le module Python datetime.

>>> 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

La fonction to_datetime() ne modifie pas les données de la DataFrame en place, donc nous devons assigner la Series de Pandas retournée à la colonne spécifique de la DataFrame.

La fonction to_datetime() est intelligente pour convertir en Datetime

La fonction to_datetime() pourrait faire la conversion en datetime d’une manière intelligente sans donner la chaîne de format datetime. Elle trouvera le motif de la chaîne automatiquement et intelligemment.

>>> 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
Attention

Bien que to_datetime puisse faire son travail sans donner le format intelligemment, la vitesse de conversion est beaucoup plus basse que celle quand le format est donné.

Nous pourrions mettre l’option infer_datetime_format de to_datetime à True pour passer la conversion à un mode plus rapide si le format de la chaîne datetime pouvait être déduit sans donner la chaîne format.

Cela pourrait augmenter la vitesse d’analyse de 5~6 fois.

DataFrame apply Méthode pour convertir une colonne de DataFrame en Datetime

apply(func, *args, **kwds)

La méthode apply de DataFrame applique la fonction func à chaque colonne ou ligne.

Nous pourrions utiliser la fonction lambda à la place de func pour la simplicité.

>>> 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

Méthodes de conversion des colonnes de DataFrame en comparaison de performance de date et heure

Utilisons timeit pour comparer les performances de chronométrage des deux méthodes présentées dans cet article.

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)

La méthode apply est même légèrement meilleure que la méthode native de Pandas to_datetime, avec environ 80% du temps d’exécution de la fonction to_datetime.

Auteur: 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

Article connexe - Pandas DataFrame

Article connexe - Pandas DataFrame Column

Article connexe - Python DateTime