Comment convertir la colonne DataFrame en date-heure dans Pandas
-
Fonction Pandas
to_datetimepour convertir la colonne DataFrame en datetime -
DataFrame
applyMéthode pour convertir une colonne de DataFrame en Datetime - Méthodes de conversion des colonnes de DataFrame en comparaison de performance de date et heure
Nous introduirons des méthodes pour convertir la colonne Pandas DataFrame en Python datetime.
- Fonction Pandas
to_datetime(). - Méthode DataFrame
applypour 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
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.
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 FacebookArticle connexe - Pandas DataFrame
- Comment obtenir les en-têtes de colonne de Pandas DataFrame sous forme de liste
- Comment supprimer une colonne de Pandas DataFrame
- Comment convertir un float en un entier dans Pandas DataFrame
- Comment trier le DataFrame de Pandas par les valeurs d'une colonne
- Comment obtenir l'agrégat des Pandas par groupe et par somme
Article connexe - Pandas DataFrame Column
- Comment obtenir les en-têtes de colonne de Pandas DataFrame sous forme de liste
- Comment supprimer une colonne de Pandas DataFrame
- Comment obtenir la somme de la colonne Pandas
- Comment changer l'ordre des colonnes de Pandas DataFrame
- Comment convertir une colonne de DataFrame en chaîne de caractères dans Pandas
