-1

I have dataframe and I aggredated it as below. I want to sort (descending) it according to 'mean'. I m using below code but it gives an error.

enter image description here

df_agg = df.groupby('Subject Field').agg({'seniority_level':['min','mean','median','max']})

df_agg.sort_values(by='mean',ascending=False).head(10)

Error

enter image description here

user14815110
  • 133
  • 1
  • 5
  • what's the error? please provide a [mcve] to reproduce your dataset. p.s you're probably looking for `sort_index` not `values` – Umar.H Dec 20 '20 at 15:57

1 Answers1

1

Your aggregated dataframe has a multi level column index. So you need to address this by specifying both senority_level and mean.

df_agg.sort_values(('seniority_level', 'mean'), ascending=False)

Quick check to demonstrate:

df = pd.DataFrame({
    'Accounting': [1, 2, 3],
    'Acoustics': [4, 5, 6],
}).melt(var_name='Subject Field', value_name='seniority_level')
df_agg = df.groupby('Subject Field').agg(
    {'seniority_level':['min', 'mean', 'median']}
)

df_agg.sort_values(('seniority_level','mean'), ascending=True)
              seniority_level            
                          min mean median
Subject Field                            
Accounting                  1    2      2
Acoustics                   4    5      5
df_agg.sort_values(('seniority_level','mean'), ascending=False)
              seniority_level            
                          min mean median
Subject Field                            
Acoustics                   4    5      5
Accounting                  1    2      2
Cohan
  • 4,384
  • 2
  • 22
  • 40