Convierta la columna DataFrame a Datetime en Pandas

Mehvish Ashiq 21 junio 2023
  1. Utilice pd.to_datetime() para convertir la columna DataFrame en Datetime
  2. Use pd.astype() para convertir la columna DataFrame a Datetime
  3. Use lambda para convertir la columna DataFrame a Datetime
  4. Use aplicar () para convertir múltiples columnas de marco de datos a fecha y hora
Convierta la columna DataFrame a Datetime en Pandas

A veces, tenemos que encontrar datos de series temporales mientras tratamos con datos utilizando la biblioteca pandas en Python. Aquí, es posible que necesitemos convertir la cadena o la columna de tipo de objeto al formato datetime.

El tutorial de hoy demuestra el uso de los métodos pd.to_datetime(), astype(), lambda y apply() para convertir una columna de tipo cadena u objeto al formato datetime.

Utilice pd.to_datetime() para convertir la columna DataFrame en Datetime

Código de ejemplo:

import pandas as pd

df = pd.DataFrame({"Date": ["12/08/2019", "08/01/2020", "11/6/2021", "12/12/2022"]})
df["converted_to_datetime"] = pd.to_datetime(df["Date"])
print(df.info())

Producción :

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 2 columns):
 #   Column                 Non-Null Count  Dtype
---  ------                 --------------  -----
 0   Date                   4 non-null      object
 1   converted_to_datetime  4 non-null      datetime64[ns]
dtypes: datetime64[ns](1), object(1)
memory usage: 192.0+ bytes
None

Esta salida muestra que tenemos dos columnas, Date y converted_to_datetime de tipo object y datetime64[ns], respectivamente. ¿Cómo convertimos el tipo objeto a fecha y hora?

Averigüémoslo a continuación.

Primero, importamos una biblioteca de Python llamada pandas y configuramos el alias como pd para evitar las pulsaciones de teclas. Luego, creamos un marco de datos que contiene una columna llamada “Fecha” que contiene fechas en el formato DD/MM/YYYY.

Aquí, no estamos obligados a cambiar el formato, sino a convertir el tipo de datos de la columna Fecha de objeto a fechahora. Para eso, usamos el método to_datetime() y le pasamos una serie para convertir una columna de marco de datos de objeto a fechahora.

El método to_datetime() puede tomar argumentos de función tipo array, series, dataframe, escalar o dict y convertir el argumento especificado en el objeto datetime de Pandas. Aquí, info() resumió de manera concisa un marco de datos.

Supongamos que queremos fechas en un formato específico; ¿como podemos hacerlo? Practiquemos el mismo ejemplo para cambiar el formato de fecha.

Utilice to_datetime() con el atributo format para cambiar el formato de fecha

Código de ejemplo:

import pandas as pd

df = pd.DataFrame({"Date": ["12/08/2019", "08/01/2020", "11/6/2021", "12/12/2022"]})
df["converted_to_datetime"] = pd.to_datetime(df["Date"], format="%m/%d/%Y")
print(df.info())

Producción :

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 2 columns):
 #   Column                 Non-Null Count  Dtype
---  ------                 --------------  -----
 0   Date                   4 non-null      object
 1   converted_to_datetime  4 non-null      datetime64[ns]
dtypes: datetime64[ns](1), object(1)
memory usage: 192.0+ bytes
None

Este fragmento de código es similar al último ejemplo y produce el mismo resultado, pero ahora tenemos fechas en formato MM/DD/AAAA usando el atributo format, que se usa para especificar el formato de fecha. También podemos especificar la hora como %H:%M:%S si queremos.

Utilice to_datetime() con el atributo infer_datetime_format

Código de ejemplo:

import pandas as pd

df = pd.DataFrame({"Date": ["12/08/2019", "08/01/2020", "11/6/2021", "12/12/2022"]})
df["converted_to_datetime"] = pd.to_datetime(df["Date"], infer_datetime_format=True)
print(df.info())

Producción :

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 2 columns):
 #   Column                 Non-Null Count  Dtype
---  ------                 --------------  -----
 0   Date                   4 non-null      object
 1   converted_to_datetime  4 non-null      datetime64[ns]
dtypes: datetime64[ns](1), object(1)
memory usage: 192.0+ bytes
None

En el código de ejemplo anterior, tuvimos que usar el atributo format mientras usamos el método to_datetime() para especificar el formato de fecha, pero establecer infer_datetime_format en True nos ayuda a detectar el formato de fecha automáticamente y convertir el especificado. columna del marco de datos a datetime.

Use pd.astype() para convertir la columna DataFrame a Datetime

Código de ejemplo:

import pandas as pd

df = pd.DataFrame({"Date": ["12/08/2019", "08/01/2020", "11/6/2021", "12/12/2022"]})
df["converted_to_datetime"] = df["Date"].astype("datetime64[ns]")
print(df.info())

Producción :

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 2 columns):
 #   Column                 Non-Null Count  Dtype
---  ------                 --------------  -----
 0   Date                   4 non-null      object
 1   converted_to_datetime  4 non-null      datetime64[ns]
dtypes: datetime64[ns](1), object(1)
memory usage: 192.0+ bytes
None

Esta valla de código utiliza el método series.astype() para convertir una columna de marco de datos en datetime. Podemos usar esta función para convertir una columna de cadena al tipo datetime en el marco de datos de Pandas.

Para convertir el tipo de datos, debemos especificar un tipo de datos como argumento; en nuestro caso, es 'datetime64[ns]'.

Use lambda para convertir la columna DataFrame a Datetime

Código de ejemplo:

import pandas as pd
from datetime import datetime

df = pd.DataFrame({"Date": ["12/08/2019", "08/01/2020", "11/6/2021", "12/12/2022"]})
df["converted_to_datetime"] = df["Date"].apply(
    lambda x: datetime.strptime(x, "%m/%d/%Y")
)
print(df.info())

Producción :

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 2 columns):
 #   Column                 Non-Null Count  Dtype
---  ------                 --------------  -----
 0   Date                   4 non-null      object
 1   converted_to_datetime  4 non-null      datetime64[ns]
dtypes: datetime64[ns](1), object(1)
memory usage: 192.0+ bytes
None

En este fragmento de código, usamos el método DataFrame.apply() con la función lambda para operar con valores. Aquí, usamos el método datetime.strptime() para convertir una columna de marco de datos a datetime considerando el formato de fecha especificado.

¿Por qué utilizar la expresión lambda? Se utiliza en lugar de una función por simplicidad y facilidad de lectura.

No olvide importar datetime antes de usarlo.

Entonces supongamos que tenemos columnas “insertadas” y “actualizadas” que queremos convertir en “fecha y hora”. Aprendamos eso a continuación.

Use aplicar () para convertir múltiples columnas de marco de datos a fecha y hora

Código de ejemplo:

import pandas as pd
from datetime import datetime

df = pd.DataFrame(
    {
        "Insert_Date": ["12/08/2019", "08/01/2020", "11/6/2021", "12/12/2022"],
        "Update_Date": ["13/08/2019", "10/01/2020", "15/6/2021", "20/12/2022"],
    }
)

df[["Insert_DateTime", "Update_DateTime"]] = df[["Insert_Date", "Update_Date"]].apply(
    pd.to_datetime, errors="coerce", infer_datetime_format=True
)
print(df.info())

Producción :

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 4 columns):
 #   Column           Non-Null Count  Dtype
---  ------           --------------  -----
 0   Insert_Date      4 non-null      object
 1   Update_Date      4 non-null      object
 2   Insert_DateTime  4 non-null      datetime64[ns]
 3   Update_DateTime  4 non-null      datetime64[ns]
dtypes: datetime64[ns](2), object(2)
memory usage: 256.0+ bytes
None

Aquí, estamos usando el método apply() para convertir Insert_Date y Update_Date a datetime en columnas separadas (Insert_DateTime y Update_DateTime). El método apply() toma dos parámetros.

El primer parámetro es el nombre de la función que queremos aplicar; en este caso, es pd.to_datetime. El segundo parámetro es infer_datetime_format, que establecemos en True para obtener un formato de fecha consistente.

Tenga en cuenta que también podemos usar astype() para emitir varias columnas.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Artículo relacionado - Pandas DataFrame Column