Разница между np.argsort и естественной сортировкой index_natsorted ⇐ Python

Программы на Python
Anonymous
Разница между np.argsort и естественной сортировкой index_natsorted

Сообщение Anonymous »

У меня есть приведенный ниже фрейм данных, и я хочу выполнить естественную сортировку по столбцу «время».

Код: Выделить всё

df = pd.DataFrame({
"time": ['0hr', '128hr', '72hr', '48hr', '96hr'],
"value": [10, 20, 30, 40, 50]
})

df.sort_values(
by="time",
key=lambda x: index_natsorted(df["time"])

)
Я использую функцию index_natsorted, которая должна возвращать столбец «время» в последовательности ['0hr','48hr','72hr','96hr','128hr' ], поскольку index_natsorted, примененный к данному столбцу «время», возвращает кортеж из [0, 3, 2, 4, 1], что предполагает сортировку столбца указанным выше способом, где 0 в кортеже относится к первому элемент «0hr» столбца «время», а последующие 3 в кортеже относятся к четвертому элементу «48hr» столбца «время» и т. д.
Однако результат, который я получил:

Код: Выделить всё

output:
time value
0hr   10
96hr  50
72hr  30
128hr 20
48hr  40

Может ли кто-нибудь объяснить мне, почему функция index_natsorted возвращает столбец «время» в этой последовательности?
Как и в случае с np.argsort, в документации index_natsorted указано, что она " Сортирует последовательность, естественно, но возвращает список отсортированных индексов, а не сам отсортированный список». Поэтому мне любопытно, почему в этом случае возвращаемые индексы не будут сортировать элементы естественным образом.

Подробнее здесь: https://stackoverflow.com/questions/790 ... tural-sort

Вернуться в «Python»