import pandas as pd
#создаю такую же таблицу как у тебя
df = pd.DataFrame({
'Дата':['23-01-01','23-01-01','24-01-01','24-01-01'],
'Часы':['10:00','11:00','10:00','11:00'],
'Процент':[10.2,11.2,22.2,42.2],
'Опрошенных':[20,27,40,12]
})
#само решение
reshaped_df = df.pivot(index=['Дата'],columns='Часы',values=['Процент','Опрошенных'])\
.swaplevel(axis=1).T.reset_index()\
.pivot(index='Часы',columns='level_1')
reshaped_df.columns.names = ['Дата',None]
print(reshaped_df)
Ну в общем вот сделал такую же таблицу как у тебя в желаемом результате, решение работает, но конечно возможно наверное чуть по короче, задачка то переформатировать именно вот таким замудренным образом (не могу представить зачем с ней же неудобно работать) отнюдь не самая простая. Но сделал.
Да у тебя порядок [процент, опрошенных, процент, опрошенных] а у меня [опрошенных, процент, опрошенных, процент] на данные сами числа естественно полностью совпадают. Если это играет какую-то роль то столбцовые мульти-индексы сам подправишь. А в остальном полная копия твоей таблицы.