J'ai ce format comme objet 2020-11-18 10: 36: 29.772234 +0000 UTC, je veux convertir en heure de la date
2020-11-20 23:07:59.381081 +0000 UTC
Je lis un fichier csv avec des pandas et dans un dataframe il y a une colonne d'horodatage qui est objet. Je n'ai pas pu convertir en datetime ni lire le +0000 UTC au format
J'ai essayé ce qui suit:
datetimeObj = datetime.strptime('2020-11-21 22:16:25.389601 +0000 UTC', '%Y-%m-%d %H:%M:%S.%f %Z')
mais le% Z me donne une erreur. Un conseil pour un débutant dans le monde des python et pandas?
Réponses
Vous devez également ajouter% z avant% Z.
- % z fait référence au décalage sous la forme + HHMM ou -HHMM.
- % Z fait référence au nom du fuseau horaire.
Essaye ça:
datetime_object = datetime.strptime('2020-11-20 23:07:59.381081 +0000 UTC', '%Y-%m-%d %H:%M:%S.%f %z %Z')
En supposant que vous ayez des chaînes datetime dans ce format dans un pandas DataFrame, je suggérerais de supprimer le +0000
depuis pd.to_datetime
ne sera pas analysé +0000
et UTC
en même temps .
import pandas as pd
df = pd.DataFrame({'timestamp':["2020-11-20 23:07:59.381081 +0000 UTC"]})
df['datetime'] = pd.to_datetime(df['timestamp'].str.replace(" +0000", "", regex=False))
# df['datetime']
# 0 2020-11-20 23:07:59.381081+00:00
# Name: datetime, dtype: datetime64[ns, UTC]
Pourquoi ne pas simplement dépouiller le UTC
? Contrairement à un décalage UTC de +0000, il est sans ambiguïté. +0000 pourrait également provenir d'un fuseau horaire qui se trouve juste à avoir UTC + 0 à l'heure représentée dans l'horodatage.