簡體   English   中英

有沒有辦法在 Pandas 中進行滾動排名?

[英]Is there a way to do rolling rank in Pandas?

我試圖在 N 天的滾動周期內對一列中的某些值進行排名,而不是對整個集合進行排名。 我在這里看到了幾種使用 rolling_apply 的方法,但我讀到這不再是 python。例如,在下表中;

一種
01-01-2013 100
02-01-2013 85
03-01-2013 110
04-01-2013 60
05-01-2013 20
06-01-2013 40

對於上面的 A 列,對於 N = 3,我如何獲得如下排名;

一種 排名_A
01-01-2013 100
02-01-2013 85
03-01-2013 110 1個
04-01-2013 60 3個
05-01-2013 20 3個
06-01-2013 40 2個

是的,我們有一些變通辦法,仍在rolling ,但需要apply

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
 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM