我想要滚动计算当前行和上一次峰值之间的行数.示例代码:

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

Python相关问答推荐

acme错误-Veritas错误:模块收件箱没有属性linear_util'

Python虚拟环境的轻量级使用

当独立的网络调用不应该互相阻塞时,'

Python解析整数格式说明符的规则?

如何从数据库上传数据到html?

如何在turtle中不使用write()来绘制填充字母(例如OEG)

为什么\b在这个正则表达式中不解释为反斜杠

在方法中设置属性值时,如何处理语句不可达[Unreacable]";的问题?

人口全部乱序 - Python—Matplotlib—映射

在我融化极点数据帧之后,我如何在不添加索引的情况下将其旋转回其原始形式?

如何使用大量常量优化代码?

如何防止html代码出现在quarto gfm报告中的pandas表之上

当我定义一个继承的类时,我可以避免使用`metaclass=`吗?

Regex用于匹配Python中逗号分隔的AWS区域

如何在Python中创建仅包含完整天数的月份的列表

查找数据帧的给定列中是否存在特定值

如何在不不断遇到ChromeDriver版本错误的情况下使用Selify?

将标签与山脊线图对齐

删除另一个div中的特定div容器

如何在微调Whisper模型时更改数据集?