python - 如何获得当前行与前几行相比的排名

标签 python python-3.x pandas dataframe

如何获取当前行与之前行相比的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/

相关文章:

python - Django rest 框架文档 View

javascript - 如何按顺序获取所有元素文本

python-3.x - 将数据帧列切成十分位数并附加到矩阵

python - Pandas 数据框 groupby 的峰度不起作用

python - 如何使用循环从 Pandas 数据框中获取值?

python - 从字符串中删除空格的首选方法

Python-docx,制作word文件,需要检测是否在新页面

python - pipenv 始终无法安装 psycopg2

python-3.x - 用于大写列的 lambda 代码不起作用

python-3.x - PIL.UnidentifiedImageError : cannot identify image file