Предположим, ваш df:
Field A;mean;k B;mean;k A;std;k B;std;k
0 ct1 1 2 3 1
1 ct2 4 5 6 7
df.set_index('Field',inplace=True)
df.columns = df.columns.str.split(';',expand=True, n=1)
df=df.unstack().swaplevel(0,2).unstack().T
Результат:
Field ct1 ct2
mean;k std;k mean;k std;k
A 1 3 4 6
B 2 1 5 7
К чтобы увидеть, что на самом деле происходит на каждом шаге, просто печатайте df на каждом шагу.
Вам в основном нужен ваш df, чтобы выглядело так, чтобы вы могли преобразовать его в желаемую форму:
Field
A mean;k ct1 1
ct2 4
B mean;k ct1 2
ct2 5
A std;k ct1 3
ct2 6
B std;k ct1 1
ct2 7
Swap ваш 0-й уровень со 2-м уровнем, т. е. 1-й столбец (A, B) с третьим (ct1, ct2) столбцом
Field
ct1 mean;k A 1
ct2 mean;k A 4
ct1 mean;k B 2
ct2 mean;k B 5
ct1 std;k A 3
ct2 std;k A 6
ct1 std;k B 1
ct2 std;k B 7
Затем, снова расставив их, вы получите:
A B
Field
ct1 mean;k 1 2
std;k 3 1
ct2 mean;k 4 5
std;k 6 7