El mundo está dividido en 24 zonas horarias. Todos sabemos que se requieren diferentes zonas horarias ya que el globo entero no está iluminado al mismo tiempo. Si bien, en muchos casos, es posible que no requieramos zonas horarias, especialmente en los casos en que los datos residen en un servidor común presente en alguna ubicación o incluso en nuestros sistemas locales. En este artículo, veremos cómo eliminar la zona horaria de una columna de marca de tiempo en un marco de datos de pandas.
Creando dataframe para demostración :
Python
import pandas as pd from datetime import datetime, timezone # CREATE THE PANDAS DATAFRAME # WITH TIMESTAMP COLUMN df = pd.DataFrame({ "orderNo": [ "4278954", "3473895", "8763762", "4738289", "1294394" ], "timestamp": [ datetime.strptime("2021-06-01", "%Y-%m-%d").replace(tzinfo=timezone.utc), datetime.strptime("2021-06-02", "%Y-%m-%d").replace(tzinfo=timezone.utc), datetime.strptime("2021-06-03", "%Y-%m-%d").replace(tzinfo=timezone.utc), datetime.strptime("2021-06-04", "%Y-%m-%d").replace(tzinfo=timezone.utc), datetime.strptime("2021-06-05", "%Y-%m-%d").replace(tzinfo=timezone.utc) ] }) # PRINT THE DATATYPES OF # EACH COLUMN OF DATAFRAME print(df.dtypes) # VIEW THE DATAFRAME print(df)
Producción:
La primera parte de la salida nos dice que una columna de marca de tiempo es un objeto DateTime. El UTC entre corchetes indica que se incluye la información de la zona horaria, que en realidad es la marca de tiempo UTC. Es porque hemos proporcionado la zona horaria como UTC.
Método 1: Usar el método datetime.replace()
La función Datetime.replace() se usa para reemplazar el contenido del objeto DateTime con los parámetros dados.
Sintaxis: Datetime_object.replace(tzinfo)
Parámetros:
- tzinfo: Información de la nueva zona horaria.
Devoluciones: Devuelve el objeto de fecha y hora modificado
Ahora, crearemos una función para eliminar la zona horaria usando el módulo de fecha y hora . La función se aplicará a cada registro en la columna de marca de tiempo.
Python
import pandas as pd from datetime import datetime, timezone # CREATE THE DATAFRAME df = pd.DataFrame({ "orderNo": [ "4278954", "3473895", "8763762", "4738289", "1294394" ], "timestamp": [ datetime.strptime("2021-06-01", "%Y-%m-%d").replace(tzinfo=timezone.utc), datetime.strptime("2021-06-02", "%Y-%m-%d").replace(tzinfo=timezone.utc), datetime.strptime("2021-06-03", "%Y-%m-%d").replace(tzinfo=timezone.utc), datetime.strptime("2021-06-04", "%Y-%m-%d").replace(tzinfo=timezone.utc), datetime.strptime("2021-06-05", "%Y-%m-%d").replace(tzinfo=timezone.utc) ] }) # PRINT THE DATATYPE OF # EACH COLUMN BEFORE MANIPULATION print(df.dtypes) # FUNCTION TO REMOVE TIMEZONE def remove_timezone(dt): # HERE `dt` is a python datetime # object that used .replace() method return dt.replace(tzinfo=None) # APPLY THE ABOVE FUNCTION TO # REMOVE THE TIMEZONE INFORMATION # FROM EACH RECORD OF TIMESTAMP COLUMN IN DATAFRAME df['timestamp'] = df['timestamp'].apply(remove_timezone) # PRINT THE DATATYPE OF # EACH COLUMN AFTER MANIPULATION print(df.dtypes)
Producción:
En el resultado, podemos ver que antes de la manipulación de la zona horaria, la columna DateTime, es decir, la columna » marca de tiempo» tenía la información de la zona horaria UTC . Después de aplicar la función remove_timezone en cada registro de la columna de marca de tiempo del marco de datos, no vemos ninguna información UTC presente en el marco de datos. La columna » marca de tiempo » en el marco de datos tiene objetos de fecha y hora de python como sus valores. Entonces, cuando cada uno de estos valores pasa a través de la función remove_timezone() , utiliza el método replace() del módulo de fecha y hora de Python.
Método 2: usar pandas
Podemos lograr lo mismo sin hacer uso del módulo DateTime. Veamos cómo –
Python
import pandas as pd from datetime import datetime, timezone # CREATE THE DATAFRAME df = pd.DataFrame({ "orderNo": [ "4278954", "3473895", "8763762", "4738289", "1294394" ], "timestamp": [ datetime.strptime( "2021-06-01", "%Y-%m-%d").replace(tzinfo=timezone.utc), datetime.strptime( "2021-06-02", "%Y-%m-%d").replace(tzinfo=timezone.utc), datetime.strptime( "2021-06-03", "%Y-%m-%d").replace(tzinfo=timezone.utc), datetime.strptime( "2021-06-04", "%Y-%m-%d").replace(tzinfo=timezone.utc), datetime.strptime( "2021-06-05", "%Y-%m-%d").replace(tzinfo=timezone.utc) ] }) # PRINT THE DATATYPE OF EACH COLUMN BEFORE # MANIPULATION print(df.dtypes) # REMOVING THE TIMEZONE INFORMATION df['timestamp'] = df['timestamp'].dt.tz_localize(None) # PRINT THE DATATYPE OF EACH COLUMN AFTER # MANIPULATION print(df.dtypes)
Producción:
En el ejemplo anterior, podemos ver que el método dt.tz_localize(None) se puede aplicar a la columna del marco de datos para eliminar la información de la zona horaria. El resultado similar al ejemplo anterior refleja que después de la manipulación, la información de la zona horaria UTC ya no está presente en la columna de marca de tiempo.
Publicación traducida automáticamente
Artículo escrito por apathak092 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA