У меня есть фрейм данных, и я агрегировал его, как показано ниже. Я хочу отсортировать (по убыванию) его по «среднему». Я использую приведенный ниже код, но он дает ошибку.
df_agg = df.groupby('Subject Field').agg({'seniority_level':['min','mean','median','max']})
df_agg.sort_values(by='mean',ascending=False).head(10)
Ошибка
Ваш агрегированный фрейм данных имеет многоуровневый индекс столбца. Поэтому вам нужно решить эту проблему, указав как senority_level, так и mean.
df_agg.sort_values(('seniority_level', 'mean'), ascending=False)
Быстрая проверка для демонстрации:
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
В чем ошибка? пожалуйста, предоставьте минимальный воспроизводимый пример для воспроизведения вашего набора данных. p.s. вы, наверное, ищете sort_index, а не values