Estoy usando este método:
df = pd.DataFrame({'date': [datetime(2021, 11, 1, 13, 30), datetime(2021, 11, 2, 13, 31), datetime(2021, 11, 3, 13, 32), datetime(2021, 11, 1, 13, 33)], 'value': [1, 2, 3, 5]}) df = df.set_index('date') df = df.loc[ (df.index.time >= datetime.strptime("13:30", '%H:%M').time()) & \ (df.index.time < datetime.strptime("13:32", '%H:%M').time())]¿Hay alguna forma mejor?
Traté de usar between() :
df = df.loc[ df.index.time.between( datetime.strptime("13:30", '%H:%M').time(), datetime.strptime("13:32", '%H:%M').time())]Genera un error:
'numpy.ndarray' object has no attribute 'between' Y no logré encontrar una función numpy apropiada.
Utilice DataFrame. DataFrame.between_time :
print (df.between_time('13:30','13:32')) value date 2021-11-01 13:30:00 1 2021-11-02 13:31:00 2 2021-11-03 13:32:00 3La alternativa sería
df['date'] =pd.to_datetime(df['date']) df[df['date'].dt.strftime("%H:%M").between('13:30','13:32')] date value 0 2021-11-01 13:30:00 1 1 2021-11-02 13:31:00 2 2 2021-11-03 13:32:00 3