Эта строка кода должна работать для вас
df = df.set_index(("Unnamed", "Date")).unstack().unstack(level=1)
Для вашего фрейма данных
data = [["1973-01-01", 21.1, 1882, 55.6, 2009 ],
["1973-01-02", 21.3, 1787, 54.5, 2001 ],
["1973-01-03", 22.5, 1701, 52.0, 2186 ],
["1973-01-04", 21.1, 1799, 53.3, 1999 ]]
columns = [ ("Unnamed", "Date"), ("AAPL", "Price"),
("AAPL", "Volume"), ("IMBX", "Price"), ("IMBX", "Volume")]
df = pd.DataFrame(data, columns = pd.MultiIndex.from_tuples(columns))
это дает
Price Volume
(Unnamed, Date)
AAPL 1973-01-01 21.1 1882.0
1973-01-02 21.3 1787.0
1973-01-03 22.5 1701.0
1973-01-04 21.1 1799.0
IMBX 1973-01-01 55.6 2009.0
1973-01-02 54.5 2001.0
1973-01-03 52.0 2186.0
1973-01-04 53.3 1999.0
Если вы хотите иметь дата появляется первой в индексе, вы можете поменять местами многоиндексные уровни свопинга и отсортировать индекс для результирующего кадра данных, чтобы он выглядел красиво:
df = df.swaplevel().sort_index()