pandas 中rank函数

2020-02-11  本文已影响0人  callme周小伦

在CTR比赛中,我们常常会使用“第几次交互”、“倒数第几次交互”等特征,这就需要使用到排序功能。
rank函数极为方便。

rank函数返回从小到大排序的下标

df = pd.DataFrame({'A':['a','b']*4, 'B':[4,6,2,8,5,2,9,1]})
df['rank'] = df.groupby('A')['B'].rank()
print(df)

   A  B  rank
0  a  4   2.0
1  b  6   3.0
2  a  2   1.0
3  b  8   4.0
4  a  5   3.0
5  b  2   2.0
6  a  9   4.0
7  b  1   1.0
df = pd.DataFrame({'A':[1,1,2,2,3,3,4,4]})
df['rank'] = df.A.rank()
print(df)

   A  rank
0  1   1.5
1  1   1.5
2  2   3.5
3  2   3.5
4  3   5.5
5  3   5.5
6  4   7.5
7  4   7.5
df = pd.DataFrame({'A':[1,1,2,2,3,3,4,4]})
df['rank'] = df.A.rank(method='max')
print(df)

   A  rank
0  1   2.0
1  1   2.0
2  2   4.0
3  2   4.0
4  3   6.0
5  3   6.0
6  4   8.0
7  4   8.0
df = pd.DataFrame({'A':[1,1,2,2,3,3,4,4]})
df['rank'] = df.A.rank(method='min')
print(df)

   A  rank
0  1   1.0
1  1   1.0
2  2   3.0
3  2   3.0
4  3   5.0
5  3   5.0
6  4   7.0
7  4   7.0

df = pd.DataFrame({'A':[1,1,2,2,3,3,4,4]})
df['rank'] = df.A.rank(method='dense')
print(df)

   A  rank
0  1   1.0
1  1   1.0
2  2   2.0
3  2   2.0
4  3   3.0
5  3   3.0
6  4   4.0
7  4   4.0
df = pd.DataFrame({'A':[1,4,3,2,2,3,4,1]})
df['rank'] = df.A.rank(method='first')
print(df)

   A  rank
0  1   1.0
1  4   7.0
2  3   5.0
3  2   3.0
4  2   4.0
5  3   6.0
6  4   8.0
7  1   2.0
  1. 如果需要进行倒序,使用参数ascending=False
df = pd.DataFrame({'A':[1,1,2,2,3,3,4,4]})
df['rank'] = df.A.rank(method='max',ascending=False)
print(df)

   A  rank
0  1   8.0
1  1   8.0
2  2   6.0
3  2   6.0
4  3   4.0
5  3   4.0
6  4   2.0
7  4   2.0

上一篇下一篇

猜你喜欢

热点阅读