Saltar al contenido

Combine año, mes y día en Python para crear una fecha

Nuestro grupo de expertos despúes de ciertos días de trabajo y de recopilar de datos, encontramos los datos necesarios, deseamos que resulte útil para ti en tu plan.

Solución:

Solución

podrías usar datetime.datetime junto con .apply().

import datetime

d = datetime.datetime(2020, 5, 17)
date = d.date()

Para pandas.to_datetime(df)

Parece que tu código está bien. Ver pandas.to_datetime documentación y ¿Cómo convertir columnas en una columna de fecha y hora en pandas?

df = pd.DataFrame('year': [2015, 2016],
                   'month': [2, 3],
                   'day': [4, 5])
pd.to_datetime(df[["year", "month", "day"]])

Producción:

0   2015-02-04
1   2016-03-05
dtype: datetime64[ns]

¿Qué sucede si sus columnas AÑO, MES y DÍA tienen encabezados diferentes?

Digamos que sus columnas AÑO, MES y DÍA están etiquetadas como yy, mm y dd respectivamente. Y prefiere mantener los nombres de sus columnas sin cambios. En ese caso podrías hacerlo de la siguiente manera.

import pandas as pd

df = pd.DataFrame('yy': [2015, 2016],
                   'mm': [2, 3],
                   'dd': [4, 5])
df2 = df[["yy", "mm", "dd"]].copy()
df2.columns = ["year", "month", "day"]
pd.to_datetime(df2)

Producción:

0   2015-02-04
1   2016-03-05
dtype: datetime64[ns]

Deberías usar el apply método de la siguiente manera:

from datetime import datetime
df['myDt'] = df.apply(lambda row: datetime.strptime(f"int(row.year)-int(row.month)-int(row.day)", '%Y-%m-%d'), axis=1)

Ejemplo de ejecución:

>>> d = 'year': list(range(2015, 2020)), 'month': list(range(5, 10)), 'day': >> list(range(20, 25))
>> df = pd.DataFrame(d)
>> df

    year    month   day myDt
0   2015    5       20  2015-05-20
1   2016    6       21  2016-06-21
2   2017    7       22  2017-07-22
3   2018    8       23  2018-08-23
4   2019    9       24  2019-09-24

Aquí hay dos líneas:

df['dateInt']=df['year'].astype(str) + df['month'].astype(str).str.zfill(2)+ df['day'].astype(str).str.zfill(2)
df['Date'] = pd.to_datetime(df['dateInt'], format='%Y%m%d')

Producción

    year  month day dateInt     Date
0   2015    5   20  20150520    2015-05-20
1   2016    6   21  20160621    2016-06-21
2   2017    7   22  20170722    2017-07-22
3   2018    8   23  20180823    2018-08-23
4   2019    9   24  20190924    2019-09-24

Tienes la opción de añadir valor a nuestra información participando con tu experiencia en las interpretaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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