rank函数中的参数method有四个取值:无参,"min","max","first"
- 无参
相同排名下,取平均值进行排名
ser=pd.Series([3,2,0,3],index=list('abcd'))
print(ser)
ser=ser.rank() #默认为average
print(ser)
#输出
a 3
b 2
c 0
d 3
dtype: int64
a 3.5
b 2.0
c 1.0
d 3.5
dtype: float64
因为a与d的值相同,排名分别为3和4,取平均值后为(3+4)/2=3.5,所以a和b的排名为3.5。
- min
相同的值取较小的排名。
ser=pd.Series([3,2,0,3],index=list('abcd'))
print(ser)
ser=ser.rank(method='min')
print(ser)
#输出
a 3
b 2
c 0
d 3
dtype: int64
a 3.0
b 2.0
c 1.0
d 3.0
dtype: float64
因为a与d的值相同,排名分别为3和4,取较小的排名作为它们的排名,所以a和b的排名为3。
- max
相同的值取较大的排名。
ser=pd.Series([3,2,0,3],index=list('abcd'))
print(ser)
ser=ser.rank(method='max')
print(ser)
#输出
a 3
b 2
c 0
d 3
dtype: int64
a 4.0
b 2.0
c 1.0
d 4.0
dtype: float64
因为a与d的值相同,排名分别为3和4,取较大的排名作为它们的排名,所以a和b的排名为4。
- first
按顺序排列,不允许并列。
ser=pd.Series([3,2,0,3],index=list('abcd'))
print(ser)
ser=ser.rank(method='first')
print(ser)
#输出
a 3
b 2
c 0
d 3
dtype: int64
a 3.0
b 2.0
c 1.0
d 4.0
dtype: float64
相同的值按照出现顺序排列,先出现的值排名靠前(The first value is ranked first),不允许并列排名。