为什么pandas groupby的参数win\u类型滚动方法不正确?

2024-04-23 09:14:50 发布

您现在位置:Python中文网/ 问答频道 /正文

当我使用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一起工作。你知道吗

此外,我可以使用切片和轧制相结合的循环,但这不是应该怎么做的事情。你知道吗


Tags: testnonetruedf参数typenanwindow