#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. Отлично. Теперь он работает так, как ожидалось. Ценю вашу помощь!