Любопытно, есть ли способ преобразовать строку в целое число только во время процесса sort_values() или проще преобразовать переменную в целое число до сортировки, а затем преобразовать обратно в строку после сортировки.
Текущий код запустился, но код неверен, потому что я считаю, что D_Index на самом деле является строкой, поэтому он был отсортирован как 11,12,2,21,22,3 вместо 2,3,11,12,21,22. См. пример таблицы и код ниже.
Модель | D_индекс |
---|---|
Первый | 11 |
Второй | 12 |
В третьих | 2 |
Четвертый | 21 |
Пятый | 22 |
шестой | 3 |
df_New = df_Old.sort_values(['Model','D_Index'])
Вы можете передать ключ сортировки sort_values
:
out = df.sort_values(by='D_Index', key=lambda x: x.astype(int))
Выход:
Model D_Index
2 Third 2
5 Sixth 3
0 First 11
1 Second 12
3 Fourth 21
4 Fifth 22
Если вы хотите включить в него Model
, вы можете использовать название серии:
df.sort_values(by=['Model','D_Index'], key=lambda x: x.astype(int) if x.name=='D_Index' else x)
Вывод (в вашем примере сортировка тривиальна, поскольку Model
не имеет разных D_Index
es):
Model D_Index
4 Fifth 22
0 First 11
3 Fourth 21
1 Second 12
5 Sixth 3
2 Third 2
Отсортируйте «Модель» по алфавиту и «D_Index» по числовому значению.
Спасибо @enke! Буду делать больше домашней работы о том, как применять лямбда в других областях.
Вы можете использовать лямбда-функцию:
df.sort_values(by='D_Index', key=lambda col: col.astype(float))
Как бы я применил это с переменной «Модель», включенной в функцию сортировки?
По какому столбцу вы действительно хотите сортировать?
Отсортируйте «Модель» по алфавиту и «D_Index» по числовому значению.
Вы можете просто отсортировать два раза, но сортировка D_Index в этом конкретном случае не имеет значения.
Как бы я применил это с переменной «Модель», включенной в функцию сортировки?