我面临的问题是,如果在使用 python pandas 计算滚动平均值时其中一行或多行包含异常值,我如何拒绝 10 行的窗口?我需要的帮助是基于下面提到的以下场景的条件逻辑
窗口中异常值的条件是:
异常值的上限为 15,下限为 0
如果一个窗口中异常值的出现频率大于 10%,我们拒绝该特定窗口并移动到下一个窗口。
- 如果窗口中异常值的出现频率小于 10%,我们接受具有以下更改的特定窗口: 1) 将异常值替换为从非异常值的平均值得出的值,即其余值的 9 行,然后在移动下一个之前再次平均相同的窗口
到目前为止,这是以下代码:
_filter = lambda x: float("inf") if x > 15 or x < 0 else x
#Apply the mean over window with inf to result those values in
result = df_list["speed"].apply(_filter).rolling(10).mean().dropna()
#Print Max rolling average
print("The max rolling average is:")
result.max()