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 函数不符合我的目的。
在累积排序后使用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)
| 归档时间: |
|
| 查看次数: |
115 次 |
| 最近记录: |