сортировка значений столбца в алфавитном порядке

#python #python-3.x #pandas #dataframe

Вопрос:

Привет, у меня есть фрейм данных pandas с несколькими столбцами, в котором у меня есть столбец типа объекта, в котором значения разделены»,». Я хочу отсортировать значения столбца в алфавитном порядке.

Фрейм данных, который у меня есть :

 ID    things
1     pen,car,robot
2     lamp,jug,phone
3     switch,pen,book
 

Фрейм данных, который я хочу:

 ID    things
1     car,pen,robot
2     jug,lamp,phone
3     book,pen,switch
 

Заранее спасибо.

Ответ №1:

Разделить, отсортировать, а затем присоединиться:

 df['things'] = df.things.apply(lambda x: ','.join(sorted(x.split(','))))

df
   ID           things
0   1    car,pen,robot
1   2   jug,lamp,phone
2   3  book,pen,switch
 

Небольшой ориентир по сравнению .str с методом:

 timeit("df.things.apply(lambda x: ','.join(sorted(x.split(','))))", number=10000, globals=globals())
4.744999999995343

timeit("df['things'].str.split(',').map(np.sort).str.join(',')", number=10000, globals=globals())
14.570999999996275
 

Ответ №2:

Вы можете разделить str.split() , отсортировать с .map() помощью numpy.sort() и объединить тексты str.join() следующим образом:

 df['things'] = df['things'].str.split(',').map(np.sort).str.join(',')
 

Все используемые функции являются быстрыми векторизованными функциями Pandas/numpy.

Результат:

 print(df)


   ID           things
0   1    pen,car,robot
1   2   lamp,jug,phone
2   3  switch,pen,book
 

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

1. @Psidom Спасибо! Извлек из этого урок 🙂