我可以获取一列的 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]: 12938len(sma.array) Out[4]: 6458len(df[df.ha=='H']) Out[5]: 6458任何人都知道我怎样才能让 sma 函数不平均客场比赛的目标,但仍然保留一行,即 sma 的值直到那个点?从而返回一个与我的数据框长度相同的数组?
1 回答
千巷猫影
TA贡献1829条经验 获得超7个赞
将滚动值分配给数据框时,您可以使用.loc过滤
import pandas as pd
import numpy as np
t = pd.DataFrame({'G':['a','a','h','a','h','a','a','h'],'scores':[3,2,1,5,3,1,6,5]})
t['avg'] = np.nan
t.loc[t.G=='h','avg'] = t[t.G=='h'].scores.rolling(window=2).mean()
输出:
G scores avg
0 a 3 NaN
1 a 2 NaN
2 h 1 NaN
3 a 5 NaN
4 h 3 2.0
5 a 1 NaN
6 a 6 NaN
7 h 5 4.0
添加回答
举报
0/150
提交
取消
