Как отсортировать данные по количеству символов от наименьшего к наибольшему и наоборот в python?

помогите пожалуйста! Работаю в гугл коллабе, на диске загружен файл эксель. Таблица у меня выведена и там даны столбцы. Столбец song_name нужно отсортировать по количеству символов от наименьшего к наибольшему и вывести 5 названий песен. То же самое нужно сделать и от наибольшего к наименьшему. Помогите пожалуйста.....


Ответы (2 шт):

Автор решения: RuslanZanevskiy

Если надо сделать все в excel то вот: сортировка. Если с использованием python то надо ипользовать какую-нибудь библиотеку, например openpyxl.

→ Ссылка
Автор решения: passant

Вообще-то ваш вопрос никакого отношения к EXCEL и работе с ним не имеет. Но вы, вопреки правилам данного форума, свои попытки решения задачи не приводите, как и не приводите никакого воспроизводимого примера. Поэтому исходим из того, что вы написали. У вас есть "столбец song_name" т.е. догадываемся, чтотаблицу с EXCEL-файла вы прочитали, скорее всего в DataFrame. Столбец легко превращается в список. На всякий случай:

my_list = df["song_name"].tolist()

Теперь вам надо из этого списка вывести по пять самых длинных и самых коротких элементов. Я конечно не буду набивать для вас пример с двумя десятками названий песен. Но вот код, который принимая на вход список строк выводит на печать пять самых коротких строк и пять самых длинных.

my_list=['Мой', 'дядя', 'самых', 'честных', 'правил', 'когда', 'не', 'в', 'шутку', 'занемог', 'он', 'уважать', 'себя', 'заставил', 'и', 'лучше', 'выдумать', 'не', 'мог']

dl=np.array(list((map(len,my_list))))
in_sm=list(np.argsort(dl)[:5])
in_lr=list(np.argsort(dl)[-5:])

# Собственно - все. Дальше чистый вывод, предположим -  в консоль.

print('Пять самых коротких строк')
for i in in_sm:
    print (my_list[i])
print('Пять самых длинных строк')
for i in in_sm:
    print (my_list[i])

Результат:

Пять самых коротких строк
и
в
он
не
не
Пять самых длинных строк
честных
уважать
занемог
заставил
выдумать

Надеюсь, подтюнинговать под вашу задачу сумеете самостоятельно.

→ Ссылка