为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蝴蝶刀刀 2021-07-07 14:37:01
怎么做pandas.DataFrame.rank(pct=True)从0开始?例如,如果我在一列中有 11 个数字,rank将产生0.0909, 0.1818, ..., 1.0000. 我希望它屈服0.0000, 0.1000, ..., 1.0000。有没有简单的方法来实现这一目标?
查看完整描述

2 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

您可以减去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


查看完整回答
反对 回复 2021-07-13
?
炎炎设计

TA贡献1808条经验 获得超4个赞

使用 Pandas 方法排名然后减去 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


查看完整回答
反对 回复 2021-07-13
  • 2 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信