You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel中复现Pandas的rank()及rank(pct=True)计算结果

如何在Excel中复现Pandas的rank()及rank(pct=True)计算结果

咱们先搞清楚你遇到的问题根源:Pandas的rank()方法默认是升序排序规则(数值越小,排名越靠前;数值越大,排名越靠后),而你一开始用的Excel公式=RANK.AVG(A1,$A$1:$A$13,0)里,第三个参数0代表降序排序(数值越大,排名越靠前),这就导致两者的排名结果完全反过来了。

下面分两步给你对应公式,完美复现Pandas的结果:

1. 复现Pandas的rank()结果(对应你要的rank列)

把Excel的排序方向改成升序,也就是把RANK.AVG的第三个参数换成1,公式如下:

=RANK.AVG(A1,$A$1:$A$13,1)

把这个公式下拉填充到所有行,你就能得到和Pandas完全一致的排名:

  • 两个500的排名会是12.5(对应Pandas里的12.5)
  • 两个30的排名会是3.5(对应Pandas里的3.5)
  • 最小的1排名是1,和Pandas结果匹配

2. 复现Pandas的rank(pct=True)结果(对应你要的perc列)

Pandas的rank(pct=True)本质是把排名值除以总数据的行数,所以我们可以直接把上面得到的排名结果除以数据的总数量。为了灵活(比如数据行数变化时不用手动改数字),可以用COUNTA函数统计总非空行数:

=RANK.AVG(A1,$A$1:$A$13,1)/COUNTA($A$1:$A$13)

或者如果你的数据全是数字,用COUNT函数也可以:

=RANK.AVG(A1,$A$1:$A$13,1)/COUNT($A$1:$A$13)

填充后就能得到和Pandas一致的百分比结果,比如500对应的0.961538,30对应的0.269231,完全匹配你的示例数据。

给你验证一下:总共有13行数据,12.5/13≈0.961538,正好是Pandas里的perc值,完美对应上。

备注:内容来源于stack exchange,提问作者srinath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 14:10:30