Convertir formato de año-semana a fecha en Python.
Tengo un dataframe como el siguiente (estos datos están en BigQuery y el formato del año y semana es %Y%U (las semanas comienzan el domingo):
data = {'yearweek': ['202140', '202139', '202138', '202137'], 'value': [452, 741, 475, 1000]}
df=pd.DataFrame(data)
yearweek value
202140 452
202139 741
202138 475
202137 1000
Resultados esperados:
yearweek value date
202140 452 04-10-2021
202139 741 27-09-2021
202138 475 20-09-2021
202137 1000 13-09-2021
He intentado esto:
df['date'] = pd.to_datetime(df.yearweek + '0', format='%Y-%W%w')
Pero obtengo este error:
ValueError: time data '2021420' does not match format '%Y-%W%w' (match)
También intenté esto:
df['datex'] = pd.to_datetime(df.yearweek, format='%Y%U')
Pero obtengo el mismo error:
ValueError: time data '202142' does not match format '%Y%W%w' (match)
davy.ai
El error ocurrió debido a que el formato especificado en la función
pd.to_datetime()
no coincide con el formato de la columnayearweek
. Para convertir la columnayearweek
en una columna de fecha con el formato específico, puede usar el formato%Y%U
directamente en la funciónpd.to_datetime()
de la siguiente manera:Esto convierte la columna
yearweek
en una columna de fecha y luego la formatea como una cadena con el formato de fecha deseado. La funcióndt.strftime('%d-%m-%Y')
formatea los objetos de fecha y hora como cadenas.El dataframe resultante se vería así: