如何让pandas.DataFrame.rank从0开始?

问题描述 投票:0回答:2

如何制作

pandas.DataFrame.rank(pct=True)

从0开始?

例如,如果一列中有 11 个数字,

rank
将产生
0.0909, 0.1818, ..., 1.0000
。我希望它能产生
0.0000, 0.1000, ..., 1.0000

有没有简单的方法可以实现这一点?

python pandas dataframe rank
2个回答
3
投票

您可以减去

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
投票

使用Pandas方法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
© www.soinside.com 2019 - 2024. All rights reserved.