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.

TypeError: el argumento 1 de strptime() debe ser str, no Timestamp

Quiero agregar un intervalo de tiempo de 1 día a una marca de tiempo de finalización, de formato 0 2020-12-03 Nombre: Fecha de prueba, dtype: datetime64 [ns].

df:

Fecha       Id  Valor

0 2020-12-03 5 050
1 2020-04-07 12 051
2 2020-05-05 6 052
3 2020-05-19 6 059

Usé:

import datetime

end = df.loc[df.col== i, ‘Fecha’]
print(end)
start = (datetime.datetime.strptime(end,’%Y-%m-%d’) – datetime.timedelta(days=1)).strftime(‘%Y-%m-%d’)

y produjo el error:
“`
TypeError Traceback (most recent call last)
<ipython-input-161-d9b441080f1a> in <module>

10 print(end)

—> 11 start = (datetime.datetime.strptime(end,'%Y-%m-%d %H:%M:%S') – datetime.timedelta(days=1)).strftime('%Y-%m-%d')
12
13

TypeError: strptime() argument 1 must be str, not Timestamp

“`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El error se debe al hecho de que end es un objeto Timestamp, no un objeto str. Para solucionarlo, puedes usar el método .to_pydatetime() para convertir el objeto Timestamp en un objeto datetime, y luego usar datetime.datetime.strptime() para convertirlo en un objeto str. El código debería verse así:

    import datetime
    ...
    end = df.loc[df.col== i, 'Date']
    print(end)
    start = (end.to_pydatetime() - datetime.timedelta(days=1)).strftime('%Y-%m-%d')
    ...

Comments are closed.