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

如何标记DataFrame中dataType列里data3的首次连续出现

实现步骤

原始DataFrame

import pandas as pd
import numpy as np

# 构造原始数据
data = {
    'position': [1,2,3,4,5,6,7,8,9,10,1,2,3,4],
    'parent': [0,1,2,2,2,2,2,2,2,2,0,0,2,3],
    'dataType': ['data1','data2','data3','data3','data3','data3','data3','data3','data3','data3','data1','data2','data4','data3'],
    'value': ['7x13124','x21312','x312','x321r','x324','xg4352','x2312','x2131','x31231','x3x3412','432-x424','x42342-0','423','x4234']
}
df = pd.DataFrame(data, index=[1,2,3,4,5,6,7,8,9,10,12,13,14,15])

核心代码

# 标记是否为data3
df['is_data3'] = df['dataType'] == 'data3'

# 生成连续块的编号
df['block'] = (df['is_data3'] != df['is_data3'].shift()).cumsum()

# 标记trackData3列:仅每个连续data3块的第一行为yes,其余为no
df['trackData3'] = np.where(
    df['is_data3'] & (df.groupby('block').cumcount() == 0),
    'yes',
    'no'
)

# 可选:删除中间辅助列
df = df.drop(['is_data3', 'block'], axis=1)

最终结果

position  parent dataType       value trackData3
1          1       0    data1    7x13124         no
2          2       1    data2     x21312         no
3          3       2    data3       x312        yes
4          4       2    data3      x321r         no
5          5       2    data3       x324         no
6          6       2    data3     xg4352         no
7          7       2    data3      x2312         no
8          8       2    data3      x2131         no
9          9       2    data3     x31231         no
10        10       2    data3    x3x3412         no
12         1       0    data1  432-x424         no
13         2       0    data2  x42342-0         no
14         3       2    data4        423         no
15         4       3    data3      x4234        yes

代码说明

  • df['is_data3']:生成布尔列,快速筛选出所有dataType为data3的行
  • df['block']:通过对比当前行与上一行的is_data3值,生成连续块的唯一编号,每个连续的相同状态(是/不是data3)会被分配同一个编号
  • df.groupby('block').cumcount():对每个块内的行进行计数,从0开始,因此每个块的第一行计数为0,结合is_data3的判断,就能精准标记每个连续data3块的起始行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:30:46