Вы можете создать DatetimeIndex
и затем использовать DataFrame.between_time
:
df['time1'] = pd.to_datetime(df['time1'])
df = df.set_index('time1')
df = df.between_time('07:20:00','13:50:00')
При работе со временем используйте boolean indexing
:
print (type(df.loc[0, 'time1']))
<class 'datetime.time'>
from datetime import time
df = df[(df.time1 > time(7,20,0)) & (df.time1 < time(13,50,0))]
Или преобразовать время в timedeltas
:
#if input are strings
print (type(df.loc[0, 'time1']))
<class 'str'>
df['time1'] = pd.to_timedelta(df['time1'])
#if input are times
print (type(df.loc[0, 'time1']))
<class 'datetime.time'>
df['time1'] = pd.to_timedelta(df['time1'].astype(str))
print (type(df.loc[0, 'time1']))
<class 'pandas._libs.tslibs.timedeltas.Timedelta'>
df = df[(df['time1']> '07:20:00') & (df['time1'] < '13:50:00')]