Если ваш индекс str
dtype, создайте MultiIndex и вызовите unstack
:
idx = pd.MultiIndex.from_arrays(zip(*df.index.str.split()))
df = df.set_index(idx)['Last'].unstack(0)
print(df)
1996-02-26 1996-03-27
09:31:00 65.750000 266.71
09:32:00 65.890625 266.76
09:33:00 NaN 266.78
Альтернативное решение, если значения индекса datetimes
:
idx = pd.MultiIndex.from_arrays([df.index.time, df.index.floor('D')])
df = df.set_index(idx)['Last'].unstack()
print(df)
1996-02-26 1996-03-27
09:31:00 65.750000 266.71
09:32:00 65.890625 266.76
09:33:00 NaN 266.78