La conversion des fuseaux horaires de pandas Horodateurs
J'ai le texte suivant dans un dataframe:
> df['timestamps'].loc[0]
Timestamp('2014-09-02 20:24:00')
Je sais que le fuseau horaire (je pense que c'est GMT qu'il utilise, et que vous souhaitez convertir la totalité de la colonne de HNE. Comment puis-je le faire dans les Pandas?
Pour la référence, j'ai trouvé ces autres threads:
- La modification d'un timestamp unix pour un autre fuseau horaire
- Pandas: Lire Timestamp à partir de CSV en GMT alors resample
mais ils travaillent avec datetime
horodateurs. E. g.:
> datetime.datetime.fromtimestamp(df['timestamps'].loc[0], tz=None)
returns:
TypeError Traceback (most recent call last)
----> 2 datetime.datetime.fromtimestamp(ts, tz=None)
TypeError: an integer is required (got type Timestamp)
OriginalL'auteur Amelio Vazquez-Reina | 2014-09-03
Vous devez vous connecter pour publier un commentaire.
Suffit d'utiliser
tz_convert
méthode.Disons que vous avez un Timestamp objet:
Si vous êtes intéressé par la conversion des plages de dates:
Pour les grandes séries chronologiques:
Comme dit dans une autre réponse, si vos données ne disposent pas d'un fuseau horaire défini, vous aurez besoin de
tz_localize
:df['timestamps'][0].tz_convert('US/Eastern')
j'obtiens:Exception: Cannot convert tz-naive Timestamp, use tz_localize or localize
Même si j'essaie de travailler avec la colonne directement:
df['timestamps'].tz_convert('US/Eastern')
TypeError: index is not a valid DatetimeIndex or PeriodIndex
vous devez tz_localize premier (comme indiqué en fin de ma réponse), vous ne pouvez pas convertir un fuseau horaire si vous ne savez pas quel fuseau horaire vous avez commencé.
Oui, désolé, j'ai juste édité ma réponse. Ça fonctionne maintenant?
Remarque: vous ne pouvez pas utiliser
tz_localize
outz_convert
directement sur un colonne, seul sur une indexOriginalL'auteur
datetime est fromtimestamp est fait à partir d'une POSIX timestamp c'est à dire mme de 1970-1-1 GMT
Je pense que c'est peut-être une question que je suis en PST fuseau horaire.
Ce qui est différent de pandas Timestamp (bien que sous le capot qui est ns de 1970-1-1).
Pour convertir un Timestamp/datetime64 colonne, utilisez tz_convert (si l'on tz naïf, c'est à dire ne pas avoir un fuseau horaire encore, vous aurez besoin de tz_localize première):
Voir le le temps de la zone de manutention de la section de la documentation.
OriginalL'auteur