Python 有没有办法在熊猫身上做滚动排名?

Python 有没有办法在熊猫身上做滚动排名?,python,pandas,dataframe,ranking,rank,Python,Pandas,Dataframe,Ranking,Rank,我试图在N天的滚动周期内,在一列中对一些值进行排序,而不是在整个集合中进行排序。我在这里看到了几种使用rolling_apply的方法,但我已经了解到python中不再使用这种方法。例如,在下表中 A. 01-01-2013 100 02-01-2013 85 03-01-2013 110 04-01-2013 60 05-01-2013 20 06-01-2013 40 是的,我们还有一些工作要做,仍然需要滚动,但需要应用 df.A.rolling(3).apply(lambda x: pd.

我试图在N天的滚动周期内,在一列中对一些值进行排序,而不是在整个集合中进行排序。我在这里看到了几种使用rolling_apply的方法,但我已经了解到python中不再使用这种方法。例如,在下表中

A. 01-01-2013 100 02-01-2013 85 03-01-2013 110 04-01-2013 60 05-01-2013 20 06-01-2013 40
是的,我们还有一些工作要做,仍然需要
滚动
,但需要
应用

df.A.rolling(3).apply(lambda x: pd.Series(x).rank(ascending=False)[-1])
01-01-2013    NaN
02-01-2013    NaN
03-01-2013    1.0
04-01-2013    3.0
05-01-2013    3.0
06-01-2013    2.0
Name: A, dtype: float64
 

谢谢。[-1]代表什么?在我的数据中,如果我设置一个较大的滚动窗口,如30或KeyError,当窗口为6或更少时,我会得到整个系列的结果NaN。@evacoder,它会选择每次滚动的最后一行,因为滚动返回一个数组和一堆。经过一番努力,在您的帮助下,我终于找到了一个适用于我的数据集的解决方案。我还意识到,在我应用了滚动排名公式后,我的表格排序出现了一个错误,这使计算变得混乱。rank_pos=lambda x:pd.Series(x).rank(升序=False).iloc[-1]js_sales_raw['sales_rank']=js_sales_raw['rate_of_sale_i'].rolling(window=30,center=False)。应用(rank_pos)如果性能是一个问题,您可能希望查看此线程:具体地说。