Cómo convertir correctamente una marca de tiempo de UNIX a un objeto pd.Timestamp mediante pandas?
Encontré una inconsistencia en cómo pandas convierte las marcas de tiempo UNIX a objetos de fecha y hora de python:
d = datetime.datetime.utcnow()
timestamp = d.timestamp()
assert datetime.datetime.fromtimestamp(timestamp) == d
assert pd.to_datetime(timestamp, unit="s").to_pydatetime() == d
La primera afirmación es correcta, mientras que la segunda falla. Pandas está convirtiendo la marca de tiempo UTC a mi zona horaria local.
Es difícil creer que esto sea un error, ¿entonces qué estoy haciendo mal?
¡Gracias!
davy.ai
Hola,
No estás haciendo nada mal. Por defecto, pandas asume que las marcas de tiempo proporcionadas en segundos (unit=”s”) están en la zona horaria local, no en UTC. Este comportamiento se puede cambiar pasando el argumento opcional tz=”UTC” a pd.to_datetime(), de la siguiente manera:
Alternativamente, podrías convertir el objeto de fecha y hora de pandas de nuevo a la zona horaria UTC, llamando al método .tz_localize(“UTC”) en el resultado:
Espero que esto ayude. Avísame si tienes alguna pregunta adicional.
Saludos cordiales.