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

Pandas中flag列连续5次及以上为1时如何将flag1对应值设为1

Pandas 实现连续值判定并修改对应列

现有包含flag、flag1两列的Pandas DataFrame,需实现如下逻辑:若flag列连续出现5次及以上取值大于1,则将对应行的flag1列值修改为1。

实现代码

import pandas as pd

# 构造测试数据
df = pd.DataFrame({'flag':[0,0,2,2,2,2,2,2,2,0,0,0],'flag1':[0,0,0,0,0,0,0,0,0,0,0,0]})

# 核心逻辑
mask = df['flag'] > 1
groups = (~mask).cumsum()
df.loc[mask.groupby(groups).transform('count') >= 5, 'flag1'] = 1

# 输出结果验证
print(df)

逻辑说明

  • 首先生成布尔掩码mask,标记所有flag取值大于1的行
  • 对掩码取反后累加求和,将连续满足flag>1的行划分到同一分组
  • 统计每个分组的长度,筛选出长度≥5的分组,将对应行的flag1赋值为1

提示:如果实际需求是判定flag≥1(匹配你给出的示例取值),只需将mask = df['flag'] > 1修改为mask = df['flag'] >= 1即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:54:02