Сортировать значение столбца данных на основе списка приоритетов в python - PullRequest
0 голосов
/ 24 марта 2020

У меня есть фрейм данных с двумя столбцами, как указано ниже:

Col 1       Col2
  A         RED
  B         GREEN
  C         AMBER
  D          RED
  E          GREEN

Я хочу, чтобы выходной фрейм данных был:

Col1        Col2
 A           RED
 D           RED
 C           AMBER
 B            GREEN
 E            GREEN

Я хочу, чтобы столбец сортировался в порядке Приорти красный, желтый и зеленый независимо от значения в столбце 1.

Заранее благодарен за любую помощь

Ответы [ 2 ]

3 голосов
/ 24 марта 2020

Другое решение:

  #create a mapping of the sort order
  sortbox = {'RED':1,'AMBER':2,'GREEN':3}

  #create new column with the sort order
  df['sort_column'] = df.Col2.map(sortbox)

  #sort with sort_column

 df.sort_values('sort_column').drop('sort_column',axis=1).reset_index(drop=True)


   Col 1    Col2
0   A       RED
1   D       RED
2   C       AMBER
3   B       GREEN
4   E       GREEN
1 голос
/ 24 марта 2020

Один из способов сделать это - добавить еще один столбец, который содержит вторую букву каждой строки в столбце col2, и отсортировать по нему (это единственный порядок сортировки, который я нашел подходящим для вашего вопроса):

d1 = {'col1': ['A', 'B', 'C', 'D', 'E'], 'col2': ['RED', 'GREEN', 'AMBER', 'RED', 'GREEN']}
df1 = pd.DataFrame(data=d1)
df1['col3'] = [i[1] for i in df1['col2']]
df1 = df1.sort_values(by='col3')

Результат, исключив 3-й столбец, похож на тот, который вы опубликовали

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...