对数据框中的值进行排序,但随机化具有相同值的项目的顺序
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_1
和 prod_2
的顺序,因为它们的分数相同。 sort_values
似乎没有任何方法可以做到这一点。
我能想到的唯一解决方案是从数据框中获取所有可能的分数,然后为每个分数创建一个新的数据框,将它们打乱,然后将它们拼接在一起,但似乎应该有一个更好的方法。
使用完全随机数的新列(例如使用 numpy.random.randint)然后按两者排序怎么样?
sort_values(by=["score","rand_col"], ascending=[False,False])
我正在编写一个推荐系统,根据分配给每个产品的分数推荐产品,例如在以下数据框中:
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
似乎没有任何方法可以做到这一点。
我能想到的唯一解决方案是从数据框中获取所有可能的分数,然后为每个分数创建一个新的数据框,将它们打乱,然后将它们拼接在一起,但似乎应该有一个更好的方法。
使用完全随机数的新列(例如使用 numpy.random.randint)然后按两者排序怎么样?
sort_values(by=["score","rand_col"], ascending=[False,False])