Непонятно все-же, в чем вопрос?
Вы написали свое видение разбивки времени суток на неформальные интервалы так, как вы это видите. У кото-то может быть другое видение (например - только "первая половина дня", "вторая половина дня", "ночь" или любая другая. Единой разбивки нет и быть не может. Значит, это не вопрос.
Второе, вы написали, что хотите добавить столбец в датафрейм. Как это сделать - причем так, что-бы он заполнялся по вашему условию - показываю ниже. Я НЕ решаю вашу задачу, я показываю принцип решения. А уж подправить его так, что-бы он и на вашем датафрейме и на ваших данных работал, у условие ваше проверял - оставляю вам. Надеюсь, справитесь.
df=pd.DataFrame({'A':[1,2,3,4,5,6,7,8,9,10]})
def foo(dt):
if dt<=3:
ret='A'
elif dt<=7:
ret='B'
else:
ret='C'
print (ret)
return ret
df['B']=df.apply(lambda x: foo(x['A']), axis= 1 )
P.S.И да, Jupiter файл сюда не загружают, загружают чистый код, составленный так, что-бы каждый мог его себе скопировать, запустить, получить результат и возможно как-то его подправить.