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

如何通过指定条件创建新列:按1的出现位置生成递增分组序号

实现思路

这个需求的逻辑非常简单,核心就是维护一个分组序号计数器,遍历数据时遵循两个规则即可:

  • 每遇到值为1的元素,就把分组序号加1
  • 所有元素的输出值都取当前的分组序号

运行过程完全匹配你给出的示例:第一个元素为1,分组序号从0变为1,后续4个0都输出1;第六个元素为1,分组序号变为2,后续3个0都输出2;第十个元素为1,分组序号变为3,后续2个0都输出3。

常见场景实现示例

纯Python实现

raw_data = [1,0,0,0,0,1,0,0,0,1,0,0]
result = []
group_id = 0
for num in raw_data:
    if num == 1:
        group_id += 1
    result.append(group_id)
print(result)
# 输出:[1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3]

Pandas实现

直接用累计求和函数cumsum()即可,逻辑和纯遍历完全一致:

import pandas as pd
df = pd.DataFrame({'val': [1,0,0,0,0,1,0,0,0,1,0,0]})
df['group_id'] = df['val'].cumsum()

Excel实现

假设原始数据存放在A列,从A1开始,B1输入以下公式后下拉即可:
=SUM(A$1:A1)

SQL实现

需要保证数据有明确的排序字段(假设为id),用窗口求和函数即可:

select 
    val,
    sum(val) over(order by id) as group_id
from 你的表名;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:15:03