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

如何为Pandas DataFrame中start与end间的每组行按序编号?

解决方案

先确认原始数据:

import pandas as pd

df = pd.DataFrame({
    'value': [1, 2, 3, 4, 5, 6, 7, 8, 9],
    'event': ['start', '', '', 'end', 'start', '', 'end', 'start', 'end']
})

1. 生成区间组编号

通过标记event列的start事件并累加,得到每个start-end区间的唯一组ID:

# 标记组起始点,累加后生成组编号
df['group_id'] = (df['event'] == 'start').cumsum()

这里df['event'] == 'start'会生成布尔序列,cumsum()将True视为1、False视为0累加,每遇到一个start组编号就递增,后续行直到下一个start前都属于同一组。

2. 生成区间内顺序编号

基于组编号分组后,计算每组内的顺序行号:

# 按组编号分组,生成组内从1开始的顺序编号
df['sequence_num'] = df.groupby('group_id').cumcount() + 1

cumcount()会为每组内的行生成从0开始的索引,加1后得到从1起始的顺序编号。

最终处理后的结果:

print(df)

输出:

value  event  group_id  sequence_num
0      1  start         1             1
1      2               1             2
2      3               1             3
3      4    end         1             4
4      5  start         2             1
5      6               2             2
6      7    end         2             3
7      8  start         3             1
8      9    end         3             2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:16:03