对数据框中的值进行排序,但随机化具有相同值的项目的顺序

Sort values in dataframe, but randomize order of items with same value

我正在编写一个推荐系统,根据分配给每个产品的分数推荐产品,例如在以下数据框中:

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_1prod_2 的顺序,因为它们的分数相同。 sort_values 似乎没有任何方法可以做到这一点。

我能想到的唯一解决方案是从数据框中获取所有可能的分数,然后为每个分数创建一个新的数据框,将它们打乱,然后将它们拼接在一起,但似乎应该有一个更好的方法。

使用完全随机数的新列(例如使用 numpy.random.randint)然后按两者排序怎么样?

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