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
“`
davy.ai
El error se debe al hecho de que
end
es un objetoTimestamp
, no un objetostr
. Para solucionarlo, puedes usar el método.to_pydatetime()
para convertir el objetoTimestamp
en un objetodatetime
, y luego usardatetime.datetime.strptime()
para convertirlo en un objetostr
. 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')
...