#python #pandas
#python #панды
Вопрос:
У меня есть таблица, которая в настоящее время отсортирована по номеру сайта. Эти номера сайтов не находятся ни в каком логическом порядке, но я хочу сохранить порядок номеров сайтов при сортировке по другому полю. Вот как выглядит пример данных:
И это то, как я хочу, чтобы это выглядело:
В реальном наборе данных количество строк на сайт не изменяется (т.Е. сайт 50 имеет 23 строки, размер 102 имеет 88 строк). Есть ли простой способ сохранить порядок SiteNo и отсортировать его по расстоянию? Я думал о ручных способах достижения этого, но я уверен, что у Pandas есть функция, которая способна это сделать.
Спасибо.
Ответ №1:
Попробуйте с
df = df.set_index(['siteNo']).sort_values(['Distance']).reset_index()
Обновить
df.update(df.groupby('siteNo').transform(lambda x : x.sort_values()))
Комментарии:
1. Выполнение этого приводит к сортировке фрейма данных по значению индекса, поэтому порядок индекса становится 1, 2, 5, а не 1, 5, 2. Siteno’s не сортируются в логическом порядке, но важно поддерживать их порядок.