可以做大熊猫groupby变换滚动平均值吗?

时间:2019-10-31 19:02:42

标签: pandas

大熊猫有可能做类似的事情吗?

df.groupby("A").transform(pd.rolling_mean,10)

1 个答案:

答案 0 :(得分:5)

您可以在没有transformapply的情况下执行此操作:

df = pd.DataFrame({'grp':['A']*5+['B']*5,'data':[1,2,3,4,5,2,4,6,8,10]})
df.groupby('grp')['data'].rolling(2, min_periods=1).mean()

输出:

grp   
A    0    1.0
     1    1.5
     2    2.5
     3    3.5
     4    4.5
B    5    2.0
     6    3.0
     7    5.0
     8    7.0
     9    9.0
Name: data, dtype: float64

每个评论的更新:

df = pd.DataFrame({'grp':['A']*5+['B']*5,'data':[1,2,3,4,5,2,4,6,8,10]}, 
                  index=[*'ABCDEFGHIJ'])
df['avg_2'] = df.groupby('grp')['data'].rolling(2, min_periods=1).mean()\
                .reset_index(level=0, drop=True)

输出:

  grp  data  avg_2
A   A     1    1.0
B   A     2    1.5
C   A     3    2.5
D   A     4    3.5
E   A     5    4.5
F   B     2    2.0
G   B     4    3.0
H   B     6    5.0
I   B     8    7.0
J   B    10    9.0