猿问

熊猫将帧的移动平均值附加到帧

我可以获取一列的 SMA,然后将其附加到数据框而不会出现问题


但是然后我尝试获取满足特定标准的列值的 SMA(所有行的子集,在我的情况下,在最后一个averaging_period homegames df[ df.ha =='H '] )


我得到


ValueError: Length of values does not match length of index

我的代码是错误的,我正在按我想要的方式取主场比赛的移动平均线,但是当它进入客场比赛时它会删除该行,而不是在平均时跳过它们:


sma = df[df.ha=='H'].f.rolling(window=averaging_period).mean()


df['f_sma%s' % averaging_period] = sma.array

这是我试图附加在一起的东西的长度


len(df)

   Out[3]: 12938

len(sma.array)

   Out[4]: 6458

len(df[df.ha=='H'])

   Out[5]: 6458

任何人都知道我怎样才能让 sma 函数不平均客场比赛的目标,但仍然保留一行,即 sma 的值直到那个点?从而返回一个与我的数据框长度相同的数组?


宝慕林4294392
浏览 72回答 1
1回答

千巷猫影

将滚动值分配给数据框时,您可以使用.loc过滤import pandas as pdimport numpy as npt = pd.DataFrame({'G':['a','a','h','a','h','a','a','h'],'scores':[3,2,1,5,3,1,6,5]})t['avg'] = np.nant.loc[t.G=='h','avg'] = t[t.G=='h'].scores.rolling(window=2).mean()输出:   G  scores  avg0  a       3  NaN1  a       2  NaN2  h       1  NaN3  a       5  NaN4  h       3  2.05  a       1  NaN6  a       6  NaN7  h       5  4.0
随时随地看视频慕课网APP

相关分类

Python
我要回答