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

如何将前有N个及以上连续相同值的Series元素改为前序值?

解决连续相同值阈值替换问题

给定Pandas Series:

import pandas as pd

s = pd.Series([0,0,0,1,1,1,0])

当N=3时,需要将前序连续相同值数量≥N的新元素替换为前序值,最终得到:

0    0
1    0
2    0
3    0
4    1
5    1
6    1

基于你已经生成的组ID,后续步骤如下:

  1. 计算每个连续组的长度
    用groupby结合transform('size'),得到每个元素所在连续组的长度:

    groups = (s != s.shift()).cumsum()
    group_lengths = groups.groupby(groups).transform('size')
    
  2. 定位需要替换的位置
    新组的第一个元素位置可以通过groups != groups.shift()识别,同时判断前一个组的长度是否≥N,生成替换掩码:

    mask = (groups != groups.shift()) & (group_lengths.shift() >= N)
    
  3. 执行替换
    使用mask将目标位置的元素替换为前序值(s.shift()):

    result = s.mask(mask, s.shift())
    

运行后即可得到期望的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 15:13:19