Pandas датафрейм - сортировка по частичным числам c количество лет - PullRequest
1 голос
/ 02 мая 2020

У меня есть pandas фрейм данных с 26 столбцами. Мне нужно создать барплот на основе уникальных значений столбца в определенном порядке. Мне удалось извлечь уникальные значения столбца в массиве. Теперь я хочу разобраться в определенном порядке. Там в любом случае? ПРИМЕЧАНИЕ: Я бы предпочел не нарушать индекс кадра данных, основанного на этом столбце.

мой код

  e= df['emp_length'].dropna().unique()
  e = np.sort(e)
  sns.countplot(x='emp_length',order=e,data=df)

Массив e упорядочен, как показано ниже

    array(['1 year', '10+ years', '2 years', '3 years', '4 years', '5 years',
       '6 years', '7 years', '8 years', '9 years', '< 1 year'],
        dtype=object)

Однако я хочу упорядочить массив, как показано ниже

    array(['< 1 year','1 year', '2 years', '3 years', '4 years', '5 years',
       '6 years', '7 years', '8 years', '9 years', '10+ years'],
        dtype=object)

1 Ответ

0 голосов
/ 02 мая 2020

Закройте, что нужно, используйте natsorted, но затем необходимо изменить порядок - добавьте последнее значение к первому:

a = np.array(['1 year', '10+ years', '2 years', '3 years', '4 years', '5 years',
       '6 years', '7 years', '8 years', '9 years', '< 1 year'])

from natsort import natsorted
b = natsorted(a)
print (b[-1:] + b[:-1])
['< 1 year', '1 year', '2 years', '3 years', 
 '4 years', '5 years', '6 years', '7 years', 
 '8 years', '9 years', '10+ years']
...