example - datetime python 3
Python: Convertir timedelta a int en un marco de datos (4)
Me gustaría crear una columna en un marco de datos de pandas que sea una representación entera del número de días en una columna timedelta. ¿Es posible usar ''datetime.days'' o necesito hacer algo más manual?
columna timedelta
7 días, 23:29:00
columna de día entero
7 7
Los objetos de Timedelta tienen atributos de instancia de solo lectura
.days
,
.seconds
y
.microseconds
.
Podrías hacer esto, donde
td
es tu serie de timedeltas.
La división convierte los deltas de nanosegundos en deltas de día, y la conversión a int cae a días completos.
import numpy as np
(td / np.timedelta64(1, ''D'')).astype(int)
Si la pregunta no es solo "¿cómo acceder a una forma entera del timedelta?"
pero "¿cómo convertir la columna timedelta en el marco de datos a un int?"
La respuesta puede ser un poco diferente.
Además del
.dt.days
acceso
.dt.days
, necesita
df.astype
o
pd.to_numeric
Cualquiera de estas opciones debería ayudar:
df[''tdColumn''] = pd.to_numeric(df[''tdColumn''].dt.days, downcast=''integer'')
o
df[''tdColumn''] = df[''tdColumn''].dt.days.astype(''int16'')
Use el atributo
dt.days
.
Suponiendo que
td
es el nombre de su serie timedelta, acceda a este atributo a través de:
td.dt.days
También puede obtener los atributos de
seconds
y
microseconds
de la misma manera.