计算 pandas 列中(滑动)window 中的个数

Count ones in (sliding) window in pandas column

我正在从事异常检测项目。到目前为止的结果是一个由(模型的)列组成的数据框,该列仅包含“1”和“-1”(用于正常和异常数据点)。

df = pd.DataFrame({'mod1': [1, 1, 1, -1, -1, 1, -1, -1, -1]})

现在我想知道在长度为 p 的预定义滑动 window 中有多少个“-1”。例如:查看 window 长度 p = 3 的列“mod1”,它应该作为每一行的输出返回给我(保存在新列 df['n_anomalies_p']):0, 0, 0 , 1, 2, 2, 2, 2, 3。 我怎样才能得到这些结果?

也许使用 rollinglambda 函数...

我是 python 的新手。提前谢谢你。

查看 mod1 等于 -1 的位置,然后对布尔值进行滚动求和。

df['n_anomalies_p'] = df['mod1'].eq(-1).rolling(3,0).sum()

    mod1  n_anomalies_p
0     1            0.0
1     1            0.0
2     1            0.0
3    -1            1.0
4    -1            2.0
5     1            2.0
6    -1            2.0
7    -1            2.0
8    -1            3.0