es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué obtengo el error ‘El objeto ‘Series’ no tiene el atributo ‘days’ al intentar obtener el número de días entre dos fechas?

Me he encontrado con algunos ejemplos que muestran cómo calcular la diferencia entre dos fechas usando .days. Sin embargo, por alguna razón parece que no está funcionando para mí. Tengo el siguiente código:

import datetime
from datetime import date
dfPort = pd.read_csv('C:\\Research\\Lockup\\Data\\lockupdates.csv')
dfPort = pd.DataFrame(dfPort)
todaysDate=datetime.datetime.today()
dfPort['LDate']=pd.to_datetime(dfPort['LockupExpDate'], format='%m/%d/%Y')
dfPort['TimeLeft']=(todaysDate-dfPort['LDate']).days

Obtengo el siguiente error:

AttributeError: ‘Series’ object has no attribute ‘days’

Entonces probé lo siguiente:

xx=dfPort['LDate']-todaysDate
xx.days

y obtuve el mismo mensaje de error. Las referencias en Stack Overflow que estaba leyendo son:
https://stackoverflow.com/questions/8419564/difference-between-two-dates-in-python

¿Cómo puedo solucionarlo?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema con el código es que la resta de dos fechas devuelve un objeto de tipo Series de pandas, no un objeto de tipo datetime. Por lo tanto, intentar acceder a .days directamente en el objeto Series resultará en un error de atributo. Para solucionar esto, se puede acceder al atributo .dt del objeto Series, que proporciona acceso a las propiedades datetime de los elementos de la Series, incluyendo el atributo .days. Aquí está el código modificado que debería funcionar:

    import datetime
    from datetime import date
    import pandas as pd
    
    dfPort = pd.read_csv('C:\\Research\\Lockup\\Data\\lockupdates.csv')
    dfPort = pd.DataFrame(dfPort)
    todaysDate = datetime.datetime.today()
    dfPort['LDate'] = pd.to_datetime(dfPort['LockupExpDate'], format='%m/%d/%Y')
    dfPort['TimeLeft'] = (todaysDate - dfPort['LDate']).dt.days
    
    

    Al utilizar el atributo .dt, podemos acceder correctamente al atributo .days de los elementos individuales de la Series, lo que nos permite calcular la diferencia entre dos fechas.

Comments are closed.