Given the following dataframe containing a matrix in tabular format:
values = list(range(5))
var1 = ['01', '02', '03', '0', '0']
var2 = ['a', 'b', 'c', 'd', 'e']
var3 = ['01', '02', '03', '0', '0']
var4 = ['a', 'b', 'c', 'd', 'e']
var5 = ['S1', 'S1','S1', 'S3', 'S2']
var6 = ['P1', 'P1','P1', 'P3', 'P2']
df = pd.DataFrame({'var1': var1,
'var2': var2,
'var3': var3,
'var4': var4,
'var5': var5,
'var6': var6,
'value': values})
And the following imposed order for var5 and var6:
var5_order = ['S1', 'S2', 'S3', 'S4']
var6_order = ['P1', 'P2', 'P3', 'P4']
How to pivot the dataframe in a way that var6, var1, and var2 (in this order) define a row multiindex and var5, var3, and var4 (in this order) define a column multiindex? In addition, how to impose var5_order and var6_order in the pivoted dataframe?