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

如何基于DataFrame分类字段的非末尾标识生成自增Flag字段?

解决方法

可以分两步实现需求:

  1. 提取Category的核心部分
    先从Category字段中去掉末尾的origin或view,只保留前面的核心字符串。这里用str.rsplit()从右侧按空格分割1次,取分割后的第一个元素:

    df['core_category'] = df['Category'].str.rsplit(' ', n=1).str[0]
    
  2. 生成自增Flag
    对比当前行和上一行的core_category是否不同,用ne()(不等于)生成布尔序列,再用cumsum()累加这个序列(不同时加1),最后拼接成Flag_*的格式:

    df['Flag'] = 'Flag_' + (df['core_category'].ne(df['core_category'].shift())).cumsum().astype(str)
    
  3. 可选:清理中间字段
    如果不需要保留core_category,可以直接删除:

    df.drop('core_category', axis=1, inplace=True)
    

完整代码示例

import pandas as pd

df = pd.DataFrame({'Category': {0: 'onboarding segment-confirmation-unexpected-input origin',
  1: 'onboarding segment-confirmation-unexpected-input view',
  2: 'product-availability cpf-request-unexpected-input origin',
  3: 'product-availability postalcode-validation-true-unexpected-input origin',
  4: 'product-availability postalcode-validation-true-unexpected-input view'},
 'UserId': {0: 9090, 1: 4545, 2: 3266, 3: 2894, 4: 2772}})

# 提取核心分类
df['core_category'] = df['Category'].str.rsplit(' ', n=1).str[0]
# 生成Flag
df['Flag'] = 'Flag_' + (df['core_category'].ne(df['core_category'].shift())).cumsum().astype(str)
# 删除中间字段
df.drop('core_category', axis=1, inplace=True)

print(df)

运行后得到的结果与期望一致:

Category  UserId    Flag
0  onboarding segment-confirmation-unexpected-in...    9090  Flag_1
1  onboarding segment-confirmation-unexpected-in...    4545  Flag_1
2  product-availability cpf-request-unexpected-i...    3266  Flag_2
3  product-availability postalcode-validation-tr...    2894  Flag_3
4  product-availability postalcode-validation-tr...    2772  Flag_3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:35:22