Сортировка значений при сохранении нелогического порядка

#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 не сортируются в логическом порядке, но важно поддерживать их порядок.