[英]pandas rolling how to retain the first time index of each time window
對不起我所造成的所有困惑。 shift
方法非常好。 事實證明, rolling
實際上保留了所有指數,我們所要做的就是轉回,無論指數是否規則。
rolling
方法總是保留每個時間窗口的最后一個索引。
例:
2017-01-01 NaN
2017-01-02 NaN
2017-01-03 0.654654
2017-01-04 -0.596040
2017-01-05 0.277350
2017-01-06 0.466321
2017-01-07 0.429838
2017-01-08 -0.921551
2017-01-09 -0.188982
2017-01-10 -0.277350
Freq: D, dtype: float64
輸出:
2017-01-01 NaN 2017-01-02 NaN 2017-01-03 0.654654 2017-01-04 -0.596040 2017-01-05 0.277350 2017-01-06 0.466321 2017-01-07 0.429838 2017-01-08 -0.921551 2017-01-09 -0.188982 2017-01-10 -0.277350 Freq: D, dtype: float64
但是,我想要的是一種讓每個時間窗保持其第一個索引的方法 。 可能嗎?
Index([2007-01-04, 2007-01-05, 2007-01-08, 2007-01-09, 2007-01-10, 2007-01-11], dtype='object', name='date')
現在,如果我們用window=3
進行rolling
,我想要的是類似的東西
2017-01-04 ... 2017-01-09 ...
用傳統的rolling method
,它將是
2017-01-08 ... 2017-01-11 ...
如您所見,如果您只是將輸出日期移回2
(因為每個時間窗口的長度為3個索引),您將無法獲得所需的日期。
想法1
通過首先反轉數據幀然后再返回來破解...
(lambda d: d.a.rank().rolling(3).corr(d.b.rank()).iloc[::-1])(df.iloc[::-1])
2017-01-01 0.891042
2017-01-02 0.838628
2017-01-03 0.960769
2017-01-04 -0.897918
2017-01-05 -0.996616
2017-01-06 0.327327
2017-01-07 0.443533
2017-01-08 -0.178538
2017-01-09 NaN
2017-01-10 NaN
Freq: D, dtype: float64
想法2
使用pd.Series.shift
rolling_spearmanr.shift(-2)
2017-01-01 0.891042
2017-01-02 0.838628
2017-01-03 0.960769
2017-01-04 -0.897918
2017-01-05 -0.996616
2017-01-06 0.327327
2017-01-07 0.443533
2017-01-08 -0.178538
2017-01-09 NaN
2017-01-10 NaN
Freq: D, dtype: float64
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.