Comment convertir la colonne DataFrame en date-heure dans Pandas
-
Fonction Pandas
to_datetime
pour convertir la colonne DataFrame en datetime -
DataFrame
apply
Mé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
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
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