制作方法
pandas.DataFrame.rank(pct=True)
从0开始?
例如,如果我在一列中有11个数字,则rank
将产生0.0909, 0.1818, ..., 1.0000
。我希望它产生0.0000, 0.1000, ..., 1.0000
。
有一种简单的方法可以实现吗?
答案 0 :(得分:0)
您可以减去1/n
,然后通过(n-1)/n
进行归一化(其中n
是该列中的项目数)。
您的案例代码
d = {'col1': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]}
df = pd.DataFrame(d)
count = df.count()[0]
(df.rank(pct=True) - 1/count) * count/(count-1)
上面的代码产生
col1
0 0.0
1 0.1
2 0.2
3 0.3
4 0.4
5 0.5
6 0.6
7 0.7
8 0.8
9 0.9
10 1.0
答案 1 :(得分:0)
使用熊猫方法rank,然后减去1
d = {'col1': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]}
df = pd.DataFrame(d)
df['col1'].rank(method='first')-1
返回
0 0.0
1 1.0
2 2.0
3 3.0
4 4.0
5 5.0
6 6.0
7 7.0
8 8.0
9 9.0
10 10.0
Name: col1, dtype: float64