我想要滚动计算当前行和上一次峰值之间的行数.示例代码:
Value | Rows since Peak
-----------------------
1 0
3 0
1 1
2 2
1 3
4 0
6 0
5 1
我想要滚动计算当前行和上一次峰值之间的行数.示例代码:
Value | Rows since Peak
-----------------------
1 0
3 0
1 1
2 2
1 3
4 0
6 0
5 1
您可以将这些值与cummax
进行比较,然后将其用于groupby.cumcount
:
df['Rows since Peak'] = (df.groupby(df['Value'].eq(df['Value'].cummax())
.cumsum())
.cumcount()
)
如何运作:
每当一个值等于累积的最大值(df['Value'].eq(df['Value'].cummax())
)时,我们开始一个新组(使用cumsum
来定义该组).则cumcount
从组的开始开始进行枚举.
输出:
Value Rows since Peak
0 1 0
1 3 0
2 1 1
3 2 2
4 1 3
5 4 0
6 6 0
7 5 1