Cómo eliminar la zona horaria de una columna de marca de tiempo en un marco de datos de Pandas

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: 

Salida para el bloque de código 1

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: 

Salida para el bloque de código 2

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:

Salida para el bloque de código 3

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *