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

#python #pandas

#python #pandas

Вопрос:

Привет, у меня есть столбец в моем фрейме данных, в котором есть только 1. Но если я беру первые 16 строк и выполняю операцию сортировки значений в столбце, я получаю один порядок, но когда я беру первые 17 строк и выполняю ту же операцию сортировки значений, я получаю другой порядок. Почему порядок меняется, когда нет изменений в добавленном значении относительно вышеуказанных значений, присутствующих в столбце? введите описание изображения здесь

введите описание изображения здесь

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

1. Вероятно, он использует разные алгоритмы сортировки в зависимости от размера df. Алгоритм для небольших фреймов данных — table, алгоритм для больших фреймов данных — нет.

Ответ №1:

Вам необходимо указать стабильный алгоритм сортировки: 'mergesort' . По умолчанию используется 'quicksort' . В np.sort документации есть полезные ссылки и сравнения различных методов.

 import pandas as pd
df = pd.DataFrame({'Rank': [1]*40})

df.head(17)['Rank'].sort_values()
#0     1
#14    1
#...
#1     1
#7     1
#16    1
#Name: Rank, dtype: int64    


df.head(17)['Rank'].sort_values(kind='mergesort')
#0     1
#1     1
#2     1
#...
#15    1
#16    1
#Name: Rank, dtype: int64
  

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

1. Отлично. Теперь он работает так, как ожидалось. Ценю вашу помощь!