Extrayendo intervalo de tiempo por minuto y hora en un día específico utilizando el datetimeindex de pandas.
Supongamos que tenemos un dataframe que incluye índices de tiempo y queremos extraer solo un dataframe que incluya 10:23 a 14:34. ¿Cómo podemos hacer esto?
n =1000
i = pd.date_range('2018-04-09', periods=n, freq='1min')
ts = pd.DataFrame({'A': [i for i in range(n)]}, index=i)
print(ts)
A
2018-04-09 00:00:00 0
2018-04-09 00:01:00 1
2018-04-09 00:02:00 2
2018-04-09 00:03:00 3
2018-04-09 00:04:00 4
... ...
2018-04-09 16:35:00 995
2018-04-09 16:36:00 996
2018-04-09 16:37:00 997
2018-04-09 16:38:00 998
2018-04-09 16:39:00 999
Mi intento:
Creo que para cada problema como este, necesitamos dividirlo en 3 condiciones. Corrígeme si me equivoco.
mask1 = (10 == ts.index.hour & 23 <= ts.index.minute)
mask2 = (10 <= ts.index.hour)
mask3 = (14 == ts.index.hour & 34 >= ts.index.minute)
mask = mask1 | mask2 | mask3
ts_deseado = ts[mask]
Entonces obtengo TypeError: Input must be Index or array-like
.
davy.ai
Tu enfoque es correcto, pero tienes un error de sintaxis en tu código. En lugar de usar
&
y<
, debes usar los símbolos&
y<
respectivamente. El código corregido se vería así:Esto debería darte un DataFrame que incluye solo las filas entre las 10:23 y las 14:34.