python - 熊猫将帧的移动平均值附加到帧
问题描述
我可以获取一列的 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 的值直到那个点?从而返回一个与我的数据框长度相同的数组?
解决方案
将滚动值分配给数据框时,您可以使用.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
推荐阅读
- java - 从 Oracle 函数调用 Java 函数
- c# - 当鼠标悬停在窗口上时,如何更改窗口的背景?
- c# - 在 Visual Studio 中设置但尚未绑定的断点
- python-3.x - matplotlib ylabel TypeError:“str”对象不可调用
- git - 获取 NPM 项目的最新 Git 标签
- c++ - C++ 打印与死亡钻石
- javascript - 碰撞功能不起作用?
- java - JavaFX - 如何在舞台上居中 JFXpopup 和弹出窗口的动态大小
- typescript - 带有@injectable 和普通参数的打字稿构造函数
- sql - Oracle SQL 连接和计数案例