Использование точки разворота:
(df.pivot_table(values=["A", "B", "C", "D", "E"], columns=["Id", "Date"])
.unstack()
.reset_index(1) # Multi-index level 1 = Id
.rename_axis(None, 1)) # Set columns name to None (not Date)
Вывод:
Date Id 2018-01-21 2018-01-28
A 5937.0 10.0 11.0
B 5937.0 10.0 11.0
C 5937.0 10.0 10.0
D 5937.0 10.0 10.0
E 5937.0 10.0 10.0