Если нужны агрегированные значения, например, по sum
для групп:
df1 = df.groupby('Group').sum().T.rename_axis(None, axis=1).rename_axis('Group').reset_index()
print (df1)
Group A E
0 x1 0.0 0.0
1 x2 0.0 0.0
2 x3 0.0 0.0
3 x4 0.0 0.0
4 x5 0.0 0.0
5 x6 0.0 0.0
6 x7 0.0 0.0
7 x8 0.0 0.0
РЕДАКТИРОВАТЬ:
df2 = df.set_index('Group').T.rename_axis(None, axis=1).rename_axis('Group').reset_index()
print (df2)
Group A A E E A
0 x1 0.0 0.0 0.0 0.0 0.0
1 x2 0.0 0.0 0.0 0.0 0.0
2 x3 0.0 0.0 0.0 0.0 0.0
3 x4 0.0 0.0 0.0 0.0 0.0
4 x5 0.0 0.0 0.0 0.0 0.0
5 x6 0.0 0.0 0.0 0.0 0.0
6 x7 0.0 0.0 0.0 0.0 0.0
7 x8 0.0 0.0 0.0 0.0 0.0
РЕДАКТИРОВАТЬ1:
df = (df.set_index('Group')
.groupby(level=0)
.apply(lambda x: x.stack().reset_index(level=0, drop=True))
.rename_axis(None)
.rename_axis('Group', axis=1)
.T
.reset_index())
print (df)
Group A E
0 x1 1.0 0.0
1 x2 0.0 0.0
2 x3 0.0 0.0
3 x1 0.0 0.0
4 x2 0.0 0.0
5 x3 0.0 0.0
6 x1 0.0 0.0
7 x2 3.0 0.0
8 x3 11.0 0.0
9 x1 0.0 0.0
10 x2 0.0 0.0
11 x3 0.0 6.0
12 x1 0.0 0.0
13 x2 1.0 0.0
14 x3 0.0 0.0