for name, group in df.groupby(['code', 'colour']):
    temp = group[['id', 'amount']].sort(['amount'], ascending=[0]).to_dict()
temp2 = {temp['id'][key]: temp['amount'][key] for key in temp['amount'].
    keys()}
Pandas: преобразование объекта DataFrameGroupBy в желаемый формат