如何获取当前行与前行相比的排名

Roh*_*hit 4 python dataframe python-3.x pandas

如何获取当前行与前行相比的排名

我有一个数据框,如:

Instru Price Volume
ABCD   1000  100258
ABCD   1000  100252
ABCD   1000  100168
ABCD   1000  100390
ABCD   1000  100470
ABCD   1000  100420
Run Code Online (Sandbox Code Playgroud)

我想获得当前行与 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)
Run Code Online (Sandbox Code Playgroud)

pandas.DataFrame.rank 函数不符合我的目的。

Dan*_*ejo 5

在累积排序后使用np.searchsorted:

df['Rank'] = np.array([i - np.searchsorted(sorted(df.Volume[:i]), v) for i, v in enumerate(df.Volume)]) + 1
print(df)
Run Code Online (Sandbox Code Playgroud)

输出

  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
Run Code Online (Sandbox Code Playgroud)