Selección condicional antes de cierta hora del día – dataframe de Pandas

introduzca la descripción de la imagen aquí

Tengo el dataframe (fragmento) anterior y deseo crear un nuevo dataframe que es una selección condicional en la que mantengo solo las filas que están marcadas con una fecha anterior a las 15:00:00.

Todavía soy algo nuevo en Pandas / python y he estado atascado en esto por un tiempo 🙁

Puedes usar DataFrame.between_time :

 start = pd.to_datetime('2015-02-24 11:00') rng = pd.date_range(start, periods=10, freq='14h') df = pd.DataFrame({'Date': rng, 'a': range(10)}) print (df) Date a 0 2015-02-24 11:00:00 0 1 2015-02-25 01:00:00 1 2 2015-02-25 15:00:00 2 3 2015-02-26 05:00:00 3 4 2015-02-26 19:00:00 4 5 2015-02-27 09:00:00 5 6 2015-02-27 23:00:00 6 7 2015-02-28 13:00:00 7 8 2015-03-01 03:00:00 8 9 2015-03-01 17:00:00 9 df = df.set_index('Date').between_time('00:00:00', '15:00:00') print (df) a Date 2015-02-24 11:00:00 0 2015-02-25 01:00:00 1 2015-02-25 15:00:00 2 2015-02-26 05:00:00 3 2015-02-27 09:00:00 5 2015-02-28 13:00:00 7 2015-03-01 03:00:00 8 

Si es necesario excluir 15:00:00 agregar parámetro include_end=False :

 df = df.set_index('Date').between_time('00:00:00', '15:00:00', include_end=False) print (df) a Date 2015-02-24 11:00:00 0 2015-02-25 01:00:00 1 2015-02-26 05:00:00 3 2015-02-27 09:00:00 5 2015-02-28 13:00:00 7 2015-03-01 03:00:00 8 

Puede verificar las horas de la columna de la fecha y usarla para subcontratar:

 df['date'] = pd.to_datetime(df['date']) # optional if the date column is of datetime type df[df.date.dt.hour < 15]