Convierta la columna DataFrame a Datetime en Pandas
-
Utilice
pd.to_datetime()
para convertir la columna DataFrame enDatetime
-
Use
pd.astype()
para convertir la columna DataFrame aDatetime
-
Use
lambda
para convertir la columna DataFrame aDatetime
-
Use
aplicar ()
para convertir múltiples columnas de marco de datos afecha y hora
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.
Artículo relacionado - Pandas DataFrame Column
- Cómo obtener las cabeceras de columna de Pandas DataFrame como una lista
- Cómo borrar la columna de Pandas DataFrame
- Cómo convertir la columna del DataFrame a Datetime en Pandas
- Cómo obtener la suma de la columna de Pandas
- Cómo cambiar el orden de las columnas Pandas DataFrame
- Cómo convertir la columna del DataFrame en cadena en los pandas