Я предлагаю вам использовать для этого MultiIndex
столбцы, например, через pd.pivot_table
.Вы можете сгладить столбцы как отдельный шаг, хотя ваши данные потеряют структуру.
res = pd.pivot_table(df, index=['load', 'mapping'], columns='freq',
values=['99th', 'energy'], aggfunc='first')
Результат:
99th energy
freq 1.20GHz 2.10GHz 1.20GHz 2.10GHz
load mapping
175.0k 5CN0-5CN1 0.937662 0.39128 18952.056063 19051.052048