У меня есть этот df, который мне нужно агрегировать, а затем отсортировать:

 #   Column                     Non-Null Count  Dtype  
---  ------                     --------------  -----  
 0   player_slug                692 non-null    object 
 1   player_id                  692 non-null    int64  
 2   player_nickname            692 non-null    object 
 3   player_team                692 non-null    int64  
 4   player_position            692 non-null    object 
 5   price_cartoletas           692 non-null    float64
 6   score_mean                 692 non-null    float64
 7   score_no_cleansheets_mean  692 non-null    float64
 8   diff_home_away_s           692 non-null    float64
 9   n_games                    692 non-null    int64  
 10  score_mean_home            692 non-null    float64
 11  score_mean_away            692 non-null    float64
 12  shots_x_mean               692 non-null    float64
 13  fouls_mean                 692 non-null    float64
 14  RB_mean                    692 non-null    float64
 15  PE_mean                    692 non-null    float64
 16  A_mean                     692 non-null    float64
 17  I_mean                     692 non-null    float64
 18  FS_mean                    692 non-null    float64
 19  FF_mean                    692 non-null    float64
 20  G_mean                     692 non-null    float64
 21  DD_mean                    692 non-null    float64
 22  DP_mean                    692 non-null    float64
 23  status                     692 non-null    object 
 24  price_diff                 692 non-null    float64
 25  last_points                692 non-null    float64

Я делаю это сначала:

df_agg = medias.groupby('player_slug').agg({'price_cartoletas':['mean']})

И это дает мне:

DF_TEMP                price_cartoletas
                           mean
player_slug                    
abner-felipe               5.09
abner-vinicius             5.28
adalberto                  1.72
adilson                    8.75
adriano                    9.44
...                         ...
yuri                       1.99
yuri-lima                  2.04
ze-marcos                  1.64
ze-rafael                 10.35
zeca                       7.31

Но когда я пытаюсь его отсортировать:

df_agg.sort_values('price_cartoletas', ascending=False)

Я получил:

ValueError: The column label 'price_cartoletas' is not unique.
For a multi-index, the label must be a tuple with elements corresponding to each level.

Как мне это отсортировать?

1
8-Bit Borges 19 Июл 2020 в 03:08

1 ответ

Лучший ответ

Вам следует удалить [], это создаст множественный индекс по столбцам

df_agg = medias.groupby('player_slug').agg({'price_cartoletas':'mean'}).sort_values('price_cartoletas', ascending=False)

Также, если вы хотите, чтобы несколько индексов, мы можем исправить из sort_values

df_agg = df_agg.sort_values(('price_cartoletas','mean'), ascending=False)
4
BENY 19 Июл 2020 в 00:23