Вы хотите отсортировать значения, используя стабильный алгоритм сортировки , который является mergesort:
df.sort_values(by='Type', kind='mergesort')
Из связанного ответа:
Алгоритм сортировкисчитается стабильным, если два объекта с одинаковыми ключами появляются в одинаковом порядке в отсортированном выводе и во входном массиве для сортировки.
From pandas docs :
kind: {'quicksort', 'mergesort', 'heapsort'}, по умолчанию 'quicksort'
Выбор алгоритма сортировки.Смотрите также ndarray.np.sort для получения дополнительной информации.mergesort - единственный стабильный алгоритм.Для DataFrames этот параметр применяется только при сортировке по одному столбцу или метке.
Обновление: Как правильно заметил @ALollz, лучше преобразовать всесначала нужно ввести значения в нижний регистр, а затем выполнить сортировку (т. е. в противном случае «Bird» будет помещен перед «aligator» в результате):
df['temp'] = df['Type'].str.lower()
df = df.sort_values(by='temp', kind='mergesort')
df = df.drop('temp', axis=1)