在 Python 的 Pandas 库中,rank() 和 rank.eq() 是两个不同的函数,它们的用途和行为也有所不同。下面我来详细说明它们的区别:
✅ 1. rank()
功能:
rank() 是 Pandas 中用于计算 排名 的函数。
用法:
df['rank'] = df['column'].rank(method='average')
行为:
- 计算每一行的排名,排名是基于该列的 数值大小。
- 如果有相同值,会使用 平均排名(即相同值的排名取平均)。
- 排名是从 1 开始的,比如:
- 100 分 → 1
- 90 分 → 2
- 90 分 → 1.5
- 80 分 → 3
示例:
import pandas as pd
data = {'A': [100, 90, 90, 80]}
df = pd.DataFrame(data)
df['rank'] = df['A'].rank(method='average')
print(df)
输出:
A rank
0 100 1.0
1 90 1.5
2 90 1.5
3 80 2.0
✅ 2. rank.eq()
功能:
rank.eq() 是 Pandas 中用于 计算排名 的函数,但它的用途是 判断某一行的排名是否等于某个值。
用法:
df['rank_eq_1'] = df['column'].rank(method='average').eq(1)
行为:
- 计算每一行的排名,然后判断该行的排名是否等于某个值(比如 1)。
- 返回的是一个布尔 Series,其中
True表示该行的排名等于指定值,False否则。
示例:
import pandas as pd
data = {'A': [100, 90, 90, 80]}
df = pd.DataFrame(data)
df['rank_eq_1'] = df['A'].rank(method='average').eq(1)
print(df)
输出:
A rank_eq_1
0 100 False
1 90 False
2 90 False
3 80 True