Je reçois l'erreur suivante:
time data '07/28/2014 18:54:55.099000' does not match format '%d/%m/%Y %H:%M:%S.%f'
Mais je ne peux pas voir quel paramètre est incorrect dans %d/%m/%Y %H:%M:%S.%f
?
C'est le code que j'utilise.
from datetime import datetime
time_value = datetime.strptime(csv_line[0] + '000', '%d/%m/%Y %H:%M:%S.%f')
J'ai ajouté et supprimé le 000
mais j'obtiens la même erreur.
Vous avez le mois et le jour permutés:
'%m/%d/%Y %H:%M:%S.%f'
28
ne correspondra jamais à la plage du paramètre mois %m
sinon.
Si %m
et %d
sont correctement analysés dans l'ordre, procédez comme suit:
>>> from datetime import datetime
>>> datetime.strptime('07/28/2014 18:54:55.099000', '%m/%d/%Y %H:%M:%S.%f')
datetime.datetime(2014, 7, 28, 18, 54, 55, 99000)
Vous n'avez pas besoin d'ajouter '000'
; %f
peut analyser correctement les nombres plus courts:
>>> datetime.strptime('07/28/2014 18:54:55.099', '%m/%d/%Y %H:%M:%S.%f')
datetime.datetime(2014, 7, 28, 18, 54, 55, 99000)
Bien que la réponse ci-dessus soit utile et correcte à 100%, j'aimerais ajouter ce qui suit, car seule une combinaison de la réponse ci-dessus et de la lecture du document sur les pandas m'a aidé:
Il est à noter que pour analyser une année à deux chiffres, par exemple '90' au lieu de '1990', un %y
est requis au lieu d'un %Y
.
Si l'analyse avec un format prédéfini ne fonctionne toujours pas pour vous, essayez d'utiliser l'indicateur infer_datetime_format=True
, par exemple:
yields_df['Date'] = pd.to_datetime(yields_df['Date'], infer_datetime_format=True)
Sachez que cette solution est plus lente que l’utilisation d’un format prédéfini.
Pour comparer la date et l'heure, vous pouvez essayer ceci. Le format de date/heure peut être changé
from datetime import datetime
>>> a = datetime.strptime("10/12/2013", "%m/%d/%Y")
>>> b = datetime.strptime("10/15/2013", "%m/%d/%Y")
>>> a>b
False