为什么pandas滚动方法的参数win_type与pandas groupby一起使用不正确?

时间:2019-05-21 08:01:52

标签: python pandas-groupby

在使用groupby的滚动方法中更改win_type(bartlett,triang等)参数时,它仍然可以用作参数的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_type参数不能与groupby一起使用。

此外,我可以将切片和滚动结合使用一个循环,但这并不是应该做的事情。

0 个答案:

没有答案