如何获取当前行与之前行相比的Rank
我有一个像这样的数据框:
Instru Price Volume
ABCD 1000 100258
ABCD 1000 100252
ABCD 1000 100168
ABCD 1000 100390
ABCD 1000 100470
ABCD 1000 100420
我想获取当前行相对于 Volume Column 的所有先前行的排名。
所需的数据框数据:
Instru Price Volume Rank
ABCD 1000 100258 1 => 1st Row so Rank 1
ABCD 1000 100252 2 => Rank 2 (Compare 100258,100252)
ABCD 1000 100168 3 => Rank 3 (Compare 100258,100252,100168)
ABCD 1000 100390 1 => Rank 1 (Compare 100390,100258,100252,100168)
ABCD 1000 100470 1 => Rank 1 (Compare 100470,100390,100258,100252,100168)
ABCD 1000 100420 2 => Rank 2 (Compare 100470,100420,100390,100258,100252,100168)
pandas.DataFrame.rank 函数不符合我的目的。
最佳答案
使用np.searchsorted在累积排序之后:
df['Rank'] = np.array([i - np.searchsorted(sorted(df.Volume[:i]), v) for i, v in enumerate(df.Volume)]) + 1
print(df)
输出
Instru Price Volume Rank
0 ABCD 1000 100258 1
1 ABCD 1000 100252 2
2 ABCD 1000 100168 3
3 ABCD 1000 100390 1
4 ABCD 1000 100470 1
5 ABCD 1000 100420 2
关于python - 如何获得当前行与前几行相比的排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54733869/