Как настроить сортировку значений фрейма данных Pandas по нескольким столбцам?

#python #dataframe #sorting #lambda

Вопрос:

У меня есть фрейм данных df_tgt_viz pandas, и я пытаюсь отсортировать его по первым 2 кольцам.(панды = 1.1.5)

    value_lvl_1         value_lvl_2  metrics/pageviews   
    Country 1       1 to 5 minutes             1523.0 
    Country 2     10 to 30 minutes           140602.0  
    Country 1     10 to 30 minutes             4463.0
    Country 1     30 to 60 minutes            84882.0  
    Country 1     30 to 60 minutes              403.0 
    Country 2      5 to 10 minutes              922.0 
    Country 2      5 to 10 minutes            67802.0    
    Country 1     30 to 60 minutes            84882.0 
    Country 1   less than 1 minute            14212.0 
 

Я намерен использовать sort_values метод с аргументом key=lambda x: x.map(custom_dict) , чтобы задать порядок сортировки 2-го колла.

 custom_dict = 
    {
        'less than 1 minute': 0,
        '1 to 5 minutes': 1,
        '5 to 10 minutes': 2,
        '10 to 30 minutes': 3,
        '30 to 60 minutes': 4
    }
 

Вопрос 1

Как я могу проинструктировать двойную сортировку значений, которые мне нужны? Моя попытка состояла в том, чтобы передать список key аргументу, но это приводит к ошибке:

 df_tgt_viz.sort_values(by=['value_lvl_1', 'value_lvl_2', 'metrics/orders'],
                       ascending=[True, True, False],
                       key=[lambda x: x.map(x), lambda x: x.map(custom_dict)],
                       inplace=False)
 

Вопрос 2

Как дополнительно отсортировать значения 1-го столбца, сгруппировав value_lvl_1 и metrics/pageviews убавив их по каждой группе? Так, что страна с тоталом metrics/pageviews находится на вершине.

Комментарии:

1. Если вы используете ключ, вызываемый объект будет вызываться для каждого столбца by независимо в документах . Поэтому вы не можете сортировать value_lvl_1 иначе, чем value_lvl_2 при использовании ключевого параметра. Я бы посоветовал вам создать столбцы справки для сортировки.

2. Спасибо — Если невозможно выполнить четкую и двойную сортировку, в этом случае хорошим предложением является вспомогательный столбец.