You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算当前值前连续小于它的行数?含分组场景实现

Pandas实现“当前值之前连续小于它的行数”计算

一、普通无分组场景

输入示例

import pandas as pd
df = pd.DataFrame([10,9,8,11,10,11,13], columns=['value'])

预期输出

value  number of last consecutive rows less than current
0     10                                                0
1      9                                                0
2      8                                                0
3     11                                                3
4     10                                                0
5     11                                                1
6     13                                                6

无循环实现方案

通过条件标记+累计求和重置实现,无需循环:

# 标记当前值是否大于前一个值
df['gt_prev'] = df['value'] > df['value'].shift(1)
# 生成分组键:每次不满足大于前一个时,分组键累加
df['group_key'] = (~df['gt_prev']).cumsum()
# 分组内计数,得到连续小于当前值的行数
df['number of last consecutive rows less than current'] = df.groupby('group_key').cumcount()
# 清理临时列
df = df.drop(['gt_prev', 'group_key'], axis=1)

逻辑说明:

  • 当当前值不大于前一个时,gt_prev为False,取反后触发group_key累加,形成新分组
  • 每个分组内的cumcount()从0开始计数,正好对应当前行之前连续小于它的行数

二、分组场景

输入示例

df = pd.DataFrame(
    [[10,0],[9,0],[7,0],[8,0],[11,1],[10,1],[11,1],[13,1]],
    columns=['value','group']
)

问题说明

直接使用df.groupby('group')['value'].expanding()无法实现需求,因为expanding窗口是累计所有历史行,无法区分“连续”条件,会导致逻辑错误或报错。

分组场景无循环实现方案

通过groupby结合自定义函数,复用普通场景逻辑:

def count_consecutive_less(series):
    gt_prev = series > series.shift(1)
    group_key = (~gt_prev).cumsum()
    return group_key.groupby(group_key).cumcount()

df['number of last consecutive rows less than current'] = df.groupby('group')['value'].apply(count_consecutive_less)

运行结果:

value  group  number of last consecutive rows less than current
0     10      0                                                0
1      9      0                                                0
2      7      0                                                0
3      8      0                                                1
4     11      1                                                0
5     10      1                                                0
6     11      1                                                1
7     13      1                                                2

内容的提问来源于stack exchange,提问作者tompal18

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 15:45:55