Это то, что вы хотите df.pivot_table(index=['q3'], columns=['school', 'gender'], values=['value'])
Это вывод, который я получил
value
school highschool middleschool
gender female male female male
q3
breakoff 15 1 16 2
excellent 17 3 18 4
fair 19 5 20 6
good 21 7 22 8
missing 23 9 24 10
poor 25 11 26 12
verygood 27 13 28 14
Вот кадр данных, который я использовал:
df=pd.DataFrame({'gender': ['male']*14+['female']*14, 'school':['highschool','middleschool']*14,'q3': ['breakoff','breakoff'
,'excellent','excellent','fair','fair','good','good','missing','missing','poor','poor','verygood',
'verygood','breakoff','breakoff','excellent','excellent','fair','fair','good','good','missing','missing','poor','poor',
'verygood','verygood'], 'value': np.arange(1,29)})