Попробуйте следующее:
df_start=pd.DataFrame({ 'Day' :['Friday','Tuesday','Friday','Friday'],
'Message':['spam','msg','eggs','another'],
'Time':['8:05 AM','9:45 AM', '10:34 AM', '8:45 AM']})
df_start=df_start.set_index('Time')
df_start.index = pd.to_datetime(df_start.index)
df_result=df_start.resample("2h").count().loc[:,'Message']
Для второго вывода попробуйте использовать следующее:
df_result=df_start.groupby("Day").apply(lambda df_start:
df_start.resample("2h").count())