Допустим, вы начинаете с
df = pd.DataFrame({'value': [45, 46, 47]}, index=['2018-05-12 12:00', '2018-05-12 13:00', '2018-05-12 14:00'])
Затем вы можете извлечь дату и час:
df['date'] = pd.to_datetime(df.index).date
df['hour'] = pd.to_datetime(df.index).hour
Теперь просто сгруппируйте по дате и создайте серию:
>>> df.groupby([df.date]).apply(lambda g: pd.Series(g.value.values, index='value_' + g.hour.astype(str)))
hour value_12 value_13 value_14
date
2018-05-12 45 46 47