В соответствии с предложением @Vivek Kumar, я использовал функциональность карты, используя указание отсортированных значений столбца в качестве ключа и их положение в качестве значения:
data.Category = data.Category.map(dict(zip(data.Category.value_counts().index, range(1, len(data.Category.value_counts().index)+1))))
выглядит немного грязно, было бы намного лучшеразделить его на пару строк следующим образом:
sorted_indices = data.Category.value_counts().index
data.Category = data.Category.map(dict(zip(sorted_indices, range(1, len(sorted_indices)+1))))
Это самое близкое к моему требованию.Вывод выглядит так:
Category
0 2
1 2
2 2
3 2
4 2
5 1
6 1
7 1
8 1
9 1
10 1
11 1
12 1
13 1
14 1
15 3
16 3