Сортировка значений во фрейме данных, но случайный порядок элементов с одинаковым значением - PullRequest
0 голосов
/ 05 августа 2020

Я пишу систему рекомендаций, которая рекомендует продукты на основе оценки, присвоенной каждому продукту, например, в следующем фрейме данных:

index   product_name     score
0       prod_1           2
1       prod_2           2
2       prod_3           1
3       prod_4           3

Конечно, я могу отсортировать этот фрейм данных по количеству оценок, используя sort_values('score', ascending = False), однако, это всегда будет приводить к следующему фрейму данных:

index   product_name     score
3       prod_4           3
0       prod_1           2
1       prod_2           2
2       prod_3           1

Однако я хотел бы случайным образом перемешать порядок prod_1 и prod_2, так как они имеют одинаковую оценку. Не похоже, что у sort_values есть какой-либо способ достичь этого.

Единственное решение, которое я могу придумать, - это получить все возможные оценки из фрейма данных, а затем создать новый фрейм данных для каждой оценки, перемешать те, а затем сшить их вместе, но похоже, что должен быть способ получше.

1 Ответ

1 голос
/ 05 августа 2020

Как насчет нового столбца с полностью случайными числами (используйте, например, numpy .random.randint), а затем отсортировать его по обоим?

sort_values(by=["score","rand_col"], ascending=[False,False])
...