Как при сортировке в Pandas одну из строк поместить в конец вне зависимости от её значения
Есть датафрейм, содержащий следующие значения:
Мне требуется отсортировать его по столбцу Кол-во, однако строка с "Вид дефекта" = "Прочее" должна остаться в конце. Подскажите, пожалуйста, как это сделать Что дописать в
data.sort_values(by='Кол-во', inplace='True', ascending = False)
Ответы (3 шт):
Автор решения: CrazyElf
→ Ссылка
У меня получилось только через создание специального сортировочного столбца с кортежем для управления порядком сортировки:
df['sortby'] = df.apply(lambda x: (x['Вид дефекта'] != 'Прочие', x['Кол-во']), axis=1)
df.sort_values(by='sortby', inplace=True, ascending=False)
Автор решения: strawdog
→ Ссылка
можно так:
При исходных данных:
import pandas as pd
df = pd.DataFrame({"Вид дефекта":["А","Б","В","Г","Д","Е","Ж","Прочее"], "Кол-во":[11,2,333,4,15,6,777,8]})
Вид дефекта Кол-во
0 А 11
1 Б 2
2 В 333
3 Г 4
4 Д 15
5 Е 6
6 Ж 777
7 Прочее 8
Делаем:
res = pd.concat([df[df["Вид дефекта"]!="Прочее"].
sort_values(by="Кол-во"), df[df["Вид дефекта"]=="Прочее"]])
Теперь в res:
Вид дефекта Кол-во
1 Б 2
3 Г 4
5 Е 6
0 А 11
4 Д 15
2 В 333
6 Ж 777
7 Прочее 8
Автор решения: SergFSM
→ Ссылка
вариация на тему использования сортировочного столбца (исходные данные позаимствовал тут):
df.sort_values(by='Кол-во',
ascending=False,
inplace=True,
key=lambda _: df.apply(lambda x: (x['Вид дефекта']!='Прочее',x['Кол-во']),1))
'''
Вид дефекта Кол-во
6 Ж 777
2 В 333
4 Д 15
0 А 11
5 Е 6
3 Г 4
1 Б 2
7 Прочее 8
