我有一个简单的数据框,如下所示:
df = pd.DataFrame([np.nan, np.nan, 0.004, 0.002, -0.002, 0, np.nan, np.nan, np.nan, 1e-8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
0
0 NaN
1 NaN
2 4.000000e-03
3 2.000000e-03
4 -2.000000e-03
5 0.000000e+00
6 NaN
7 NaN
8 NaN
9 1.000000e-08
10 0.000000e+00
11 0.000000e+00
12 0.000000e+00
13 0.000000e+00
14 0.000000e+00
15 0.000000e+00
16 0.000000e+00
17 0.000000e+00
18 0.000000e+00
19 0.000000e+00
当我应用窗口大小为 6 且 rolling
为 3 的 min_periods
,然后应用 .std()
时,我希望结果数据帧中的最后一个值会由 df
中的最后 6 个值计算,即从 [0,0,0,0,0,0]
计算,它应该产生 0。然而,df.rolling(6, min_periods=3).std()
产生以下输出:
0
0 NaN
1 NaN
2 NaN
3 NaN
4 3.055050e-03
5 2.581989e-03
6 2.581989e-03
7 2.581989e-03
8 2.000000e-03
9 1.154703e-03
10 5.773517e-09
11 5.773517e-09
12 5.000011e-09
13 4.472145e-09
14 4.082491e-09
15 8.148571e-12
16 8.148571e-12
17 8.148571e-12
18 8.148571e-12
19 8.148571e-12
其中最后一个值 8.148571e-12 显然不是 df
中最后 6 个值的标准差。