我有下面的一个例子:
data = {'a': {1: None, 2: 1, 3: 7, 4: 2, 5: 4},
'b': {1: None, 2: 2, 3: 2, 4: 9, 5: 6},
'c': {1: None, 2: 2.0, 3: None, 4: 7.0, 5: 4.0}}
df = pd.DataFrame(data).rename_axis('day')
a b c
day
1 NaN NaN NaN
2 1.0 2.0 2.0
3 7.0 2.0 NaN
4 2.0 9.0 7.0
5 4.0 6.0 4.0
我想得到一个新的列("std"),其中包含所有列值的滚动标准差.NaN应该被忽略.假设滚动窗口中包含的行数是3,min_periods(意味着至少有一个非空值的行数)是2.
这是预期输出:
a b c std
day
1 NaN NaN NaN NaN
2 1.0 2.0 2.0 NaN
3 7.0 2.0 NaN 2.387467
4 2.0 9.0 7.0 3.116775
5 4.0 6.0 4.0 2.531939
第一个std值(2.387467)等于np. std([1,2,2,7,2],ddof = 1).
我try 了两个解决方案,建议here,但他们不工作与我的框架,可能是因为NaN.