[英]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.