即使在 Python 中具有相同的值,也是唯一的百分位数



我希望即使在 Python 中具有相同的值也能获得唯一的百分位数

例如,以下情况按预期提供输出。

案例1

import pandas as pd
s1 = pd.Series([1,2,3,4])
s1.rank(pct=True)

案例 1 输出 - [0.25, 0.5, 0.75, 1]

我希望即使输入系列[2, 2, 2, 4],输出也是相同的。但是,这里的输出是 [ 0.5, 0.5, 0.5, 1] . 我不介意任何一个输出。

[0.25, 0.5, 0.75, 1]    
[0.5, 0.25, 0.75, 1]
[0.25, 0.75, 0.5, 1]

如果有办法实现这一目标,请告诉我。

Rank有一个参数method默认为"average",它给你你所看到的结果。 让我们将其更改为 'first' .

s1 = pd.Series([2,2,2,4])
s1.rank(pct=True,method='first')

输出:

0    0.25
1    0.50
2    0.75
3    1.00
dtype: float64

没有简单的函数可以做到这一点。 虽然我明白你想做什么,但这不是百分位分数。 事实上,您在此处显示的是百分比排名,与百分位数不同

为了获得您想要的功能,我相信您必须自己对值进行分组和计算。

最新更新