当我使用groupby更改rolling方法中的win_type(bartlett、tringa等)参数时,它仍然作为参数的None值工作
我检查了一下,没有groupby代码的情况下做得很好
# create example dataframe
df_test = pd.DataFrame({'A':[0,1]*10, 'B':[0, 5, 0,2,0,3,0,8,0,0,0,6,0,12,0,8,0,11,0,10]})
# Do rolling
df_test['C'] = df_test.groupby(['A',])['B'].rolling(window=3, center=True, win_type='bartlett').mean().droplevel(0)
df_test['D'] = df_test.groupby(['A',])['B'].rolling(window=3, center=True, win_type=None).mean().droplevel(0)
# Get this. As yoг can see columns are the same
A B C D
0 0 0 NaN NaN
1 1 5 NaN NaN
2 0 0 0.000000 0.000000
3 1 2 3.333333 3.333333
4 0 0 0.000000 0.000000
5 1 3 4.333333 4.333333
6 0 0 0.000000 0.000000
7 1 8 3.666667 3.666667
8 0 0 0.000000 0.000000
9 1 0 4.666667 4.666667
10 0 0 0.000000 0.000000
11 1 6 6.000000 6.000000
12 0 0 0.000000 0.000000
13 1 12 8.666667 8.666667
14 0 0 0.000000 0.000000
15 1 8 10.333333 10.333333
16 0 0 0.000000 0.000000
17 1 11 9.666667 9.666667
18 0 0 NaN NaN
19 1 10 NaN NaN
#Check what it should be
df_test[df_test.A==1]['B'].rolling(window=3, center=True, win_type='bartlett').mean()
1 NaN
3 2.0
5 3.0
7 8.0
9 0.0
11 6.0
13 12.0
15 8.0
17 11.0
19 NaN
df_test[df_test.A==1]['B'].rolling(window=3, center=True, win_type=None).mean()
1 NaN
3 3.333333
5 4.333333
7 3.666667
9 4.666667
11 6.000000
13 8.666667
15 10.333333
17 9.666667
19 NaN
所以我想得到“bartlett”结果,或者理解为什么win\u类型参数不能与groupby一起工作。你知道吗
此外,我可以使用切片和轧制相结合的循环,但这不是应该怎么做的事情。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐