首页 > 解决方案 > 对数据框中的值进行排序,但将具有相同值的项目的顺序随机化

问题描述

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

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

但是,我想随机打乱 and 的顺序prod_1prod_2因为它们的分数相同。似乎没有sort_values任何方法可以实现这一目标。

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

标签: pythonpandassortingshuffle

解决方案


一个具有完全随机数的新列(例如使用 numpy.random.randint)然后按两者排序呢?

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

推荐阅读