如何像它的代码一样显示pandas滚动窗口?

是的,我从这个问题修改了我的问题中的 pandas 数据框示例:但是这次问题不同

import pandas as pd

import numpy as np


d=({'A':['2020-01-01','2020-01-02','2020-01-03','2020-01-04','2020-01-05','2020-01-06','2020-01-07','2020-01-08','2020-01-09','2020-01-10'],

'B':[100,110,120,175,164,169,155,153,156,200]})

df=pd.DataFrame(d)


            A    B

0  2020-01-01  100

1  2020-01-02  110

2  2020-01-03  120

3  2020-01-04  175

4  2020-01-05  164

5  2020-01-06  169

6  2020-01-07  155

7  2020-01-08  153

8  2020-01-09  156

9  2020-01-10  200

我知道 pandas 滚动窗口代码如下(对于我的情况): df['sums']=df['B'].rolling(window=3, center=False).sum()


            A    B   sums

0  2020-01-01  100    NaN #Here's the question:

1  2020-01-02  110    NaN #Why the rolling windows NaN is just 2, but the rolling window code is 3

2  2020-01-03  120  330.0

3  2020-01-04  175  405.0

4  2020-01-05  164  459.0

5  2020-01-06  169  508.0

6  2020-01-07  155  488.0

7  2020-01-08  153  477.0

8  2020-01-09  156  464.0

9  2020-01-10  200  509.0

Name: sum, dtype: float64

我想把它变成这样:


0  2020-01-01  100    NaN # To display rolling window

1  2020-01-02  110    NaN # Like the code

2  2020-01-03  120    NaN # Not 2 but 3 NaNs

3  2020-01-04  175  330.0

4  2020-01-05  164  405.0

5  2020-01-06  169  459.0

6  2020-01-07  155  508.0

7  2020-01-08  153  488.0

8  2020-01-09  156  477.0

9  2020-01-10  200  464.0

10 2020-01-11  NaN  509.0

有办法做到吗?我尝试将NaN=np.nan其添加为这样:


1  2020-01-02  110    NaN

2  2020-01-03  120    NaN 

3  2020-01-04  175  330.0

.

.

9  2020-01-10  200  464.0

10 2020-01-11  NaN  509.0

0  2020-01-01  100    NaN

有什么办法解决这个问题吗?


慕勒3428872
浏览 89回答 1
1回答

波斯汪

该系列的开头有两个NaN,因为此时您没有足够的数据进行滚动(1 和 2 而不是 3)。从你做的行开始3。如果您想3开始NaN,请使用以下链接链接您的滚动代码shift:df['sums']=df['A'].rolling(window=3, center=False).sum().shift()输出:     A   sums0  100    NaN1  110    NaN2  120    NaN3  175  330.04  164  405.05  169  459.06  155  508.07  153  488.08  156  477.09  200  464.0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python