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),不允许并列排名。