Панды сортируются по одному столбцу и индексу - PullRequest
0 голосов
/ 02 октября 2018

В таком кадре данных я пытаюсь выяснить, как изменить его порядок в зависимости от столбца станции (индекс) и глубина , поэтому он сначала дает мне все d1st1 со всеми различными глубинами (1, 5, ес, z90, MLD), затем d1st3 снова с тем же порядком глубины и т. Д.

Есть идеи?

BB9

1 Ответ

0 голосов
/ 02 октября 2018

Сначала вам понадобится способ заказать столбец глубины.Я бы предложил создать еще один столбец для хранения значений глубины в виде чисел.

Допустим, мы сначала создадим функцию для преобразования ваших данных и назовем ваш фрейм данных "df".Функция зависит от того, как организованы ваши значения в столбце глубины.Если все они в обычном порядке, вы можете попробовать что-то еще, но если ваши значения организованы, как в вашем примере, это может помочь:

def _depth_index(x):
    if x=='1m':
        return 1.0
    elif x=='5m':
        return 5.0
    elif x =='90':
        return 90.0
    elif x=='eu' or x== 'MLD':
        return 0.0 #Not sure what 'eu' or 'MLD' stands for... Might want to return something else.

    else:
        return 0.0 # Default value

После этого примените вашу функцию кновый столбец в вашем фрейме данных:

df['indexed_depth'] = df['depth'].apply(lambda x: _depth_index(x))

И просто отсортируйте ваши значения:

sorted_df = df.sort_values(['stations', 'indexed_depth'], ascending=[True, True])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...