首页 > 解决方案 > 如何在随机化领带顺序的同时对熊猫系列的值进行排序?

问题描述

我正在使用 sort_values() 对熊猫系列中的值从最大到最小进行排序。我想知道是否有一种简单的方法可以随机化领带的顺序(?)。在这种情况下,关系的索引似乎按照作为参数给出的降序排列:

s = pd.Series([3.0, 15.0, 1.0, 22.0, 11.0, 12.0, 2.0, 5.0, 3.0, 12.0, 2.0, 3.0])
s.sort_values(ascending=False)

出去:

3     22.0
1     15.0
9     12.0
5     12.0
4     11.0
7      5.0
11     3.0
8      3.0
0      3.0
10     2.0
6      2.0
2      1.0

我已经阅读了可以作为参数给出不同种类的排序的文档:'quicksort'、'mergesort'、'heapsort'。但是,据我了解,他们都不会随机化领带的顺序。

我想我可以编写一个自定义函数,但很想知道是否存在某些东西。

标签: pythonpandassorting

解决方案


您可以先随机抽取 100 % 对系列进行洗牌sample,然后对其进行排序:

s.sample(frac=1).sort_values(ascending=False)

您还可以random_state根据需要传递参数以启动随机数生成器。


推荐阅读