python - 对数据框中的值进行排序,但将具有相同值的项目的顺序随机化
问题描述
我正在编写一个推荐系统,它根据分配给每个产品的分数推荐产品,例如在以下数据框中:
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_1
,prod_2
因为它们的分数相同。似乎没有sort_values
任何方法可以实现这一目标。
我能想出的唯一解决方案是从数据框中获取所有可能的分数,然后为每个分数创建一个新的数据框,将它们打乱,然后将它们缝合在一起,但似乎应该有更好的方法。
解决方案
一个具有完全随机数的新列(例如使用 numpy.random.randint)然后按两者排序呢?
sort_values(by=["score","rand_col"], ascending=[False,False])
推荐阅读
- python - 如何异步运行多个长时间运行的 WinRM 任务并使用 Python 检索结果?
- ios - 用结构配置两个按钮
- html - 如何删除空的div
- laravel - Laravel Blade 显示特殊字符
- javascript - React Query 仅在选项卡刷新时显示
- html - tcpdf 没有显示正确的结果
- javascript - 如何使用 javascirpt 和 jquery 自定义格式日期
- networking - 为什么在后台运行 VPN 会影响 Yggdrasil IP 访问?
- node.js - 降级 Nodejs 和 Npm
- php - 无法在 Codeigniter 4 中捕获错误