I have a dataframe that I need to stack, melt or unpivot. For each school, I need a new row for each capacity as well as a new column for levels. The levels depends on if the capacity is >0. The city column should be included as well:
data = pd.DataFrame({'school_name': {0: 'a', 1: 'b', 2: 'c'},
'primary': {0: 1, 1: 3, 2: 0},
'secondary': {0: 2, 1: 0, 2: 6},
'tertiary': {0:3, 1:6, 2:0},
'city': {0:'Bangkok', 1:'Frankfurt', 2:'Tel Aviv'}})
data
school_name primary secondary tertiary city
0 a 1 2 3 Bangkok
1 b 3 0 6 Frankfurt
2 c 0 6 0 Tel Aviv
Desired result:
school_name levels capacity city
0 a primary 1 Bangkok
1 a secondary 2 Bangkok
2 a tertiary 3 Bangkok
3 b primary 3 Frankfurt
4 b tertiary 6 Frankfurt
5 c secondary 6 Tel Aviv