have got a dataframe df
like below:
maingroup subgroup item itemrank
Citrus Mandarin aa 12
Citrus Lemon bb 22
Citrus Kiwi cc 32
Citrus Lemon dd 35
Citrus Mandarin ee 33
Citrus Kiwi ff 42
Citrus Mandarin gg 98
Citrus Mandarin hh 99
wanna sort the dataframe df
with the generated list order 'grp_list
'. have tried below logic but not working as expected, instead sorting happens with alphabetical order.
Tried logic:
grp_list = df.sort_values(by=['itemrank'], ascending=True)['subgroup'].unique().tolist() #['Mandarin', 'Lemon', 'Kiwi']
df['subgroup'] = pd.Categorical(df.subgroup, categories=grp_list, ordered=True)
Errored Output: #this should not happen
maingroup subgroup item itemrank
Citrus Kiwi cc 32
Citrus Kiwi ff 42
Citrus Lemon dd 22
Citrus Lemon bb 35
Citrus Mandarin ee 12
Citrus Mandarin aa 33
Citrus Mandarin gg 98
Citrus Mandarin hh 99
Expected Output:
maingroup subgroup item itemrank
Citrus Mandarin ee 12
Citrus Mandarin aa 33
Citrus Mandarin gg 98
Citrus Mandarin hh 99
Citrus Lemon dd 22
Citrus Lemon bb 35
Citrus Kiwi cc 32
Citrus Kiwi ff 42
Help me solve this! Not sure what's happening. Thanks in Advance.