gpt4 book ai didi

python - 当决胜局随机时在 python 中排名

转载 作者:太空宇宙 更新时间:2023-11-04 00:26:00 26 4
gpt4 key购买 nike

在 R 中,使用 rank 函数时随机打破平局的方法很简单:

rank(my_vec, ties.method = "random")

然而,尽管 scipy ( scipy.stats.rankdata ) 和 pandas ( pandas.Series.rank ) 都有排名函数,但它们都没有提出随机打破平局的方法。有没有一种简单的方法可以在具有此功能的python中使用框架?鉴于列表顺序必须保持不变。

最佳答案

Pandas 的排名允许这些方法:

method : {'average', 'min', 'max', 'first', 'dense'}
* average: average rank of group
* min: lowest rank in group
* max: highest rank in group
* first: ranks assigned in order they appear in the array
* dense: like 'min', but rank always increases by 1 between groups

为了“简单地”实现您的目标,我们可以在随机化系列后使用'first'

假设我的系列名为my_vec

my_vec.sample(frac=1).rank(method='first')

然后你可以把它按原来的顺序放回去

my_vec.sample(frac=1).rank(method='first').reindex_like(my_vec)

示例运行

my_vec = pd.Series([1, 2, 3, 1, 2, 3])

试验 1

my_vec.sample(frac=1).rank(method='first').reindex_like(my_vec)

0 2.0 <- I expect this and
1 4.0
2 6.0
3 1.0 <- this to be first ranked
4 3.0
5 5.0
dtype: float64

试验 2

my_vec.sample(frac=1).rank(method='first').reindex_like(my_vec)

0 1.0 <- Still first ranked
1 3.0
2 6.0
3 2.0 <- but order has switched
4 4.0
5 5.0
dtype: float64

关于python - 当决胜局随机时在 python 中排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47429845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com