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

如何用R识别并去除标识符末尾的'-+数字'后缀生成新列

批量去除标识符末尾的“-多位数”后缀

需求回顾

原数据集:

identifier           number
cat-123              5
green-489743         25
orange-fish5         77
red-blue123          90
dog-23               34
orange5              17
reptile              9
purple-2             11

需要生成新列identifier_edited,规则是:仅去除**标识符末尾以连字符开头、数字结尾(支持单/多位数)**的后缀,不符合该格式的标识符保持不变,最终效果:

identifier           number   identifier_edited
cat-123              5        cat
green-489743         25       green
orange-fish5         77       orange-fish5
red-blue123          90       red-blue123
dog-23               34       dog
orange5              17       orange5
reptile              9        reptile
purple-2             11       purple

解决方案:正则表达式精准匹配替换

核心思路是用正则表达式精准定位字符串末尾的-+任意位数数字,然后替换为空。关键正则表达式为:-\d+$

  • -:匹配连字符
  • \d+:匹配1个及以上数字(覆盖单/多位数)
  • $:锚定字符串结尾,确保只替换末尾的符合规则部分

1. Python Pandas 实现

import pandas as pd

# 构造或读取你的数据集
df = pd.DataFrame({
    'identifier': ['cat-123', 'green-489743', 'orange-fish5', 'red-blue123', 'dog-23', 'orange5', 'reptile', 'purple-2'],
    'number': [5, 25, 77, 90, 34, 17, 9, 11]
})

# 生成新列
df['identifier_edited'] = df['identifier'].str.replace(r'-\d+$', '', regex=True)

# 查看结果
print(df)

2. SQL 实现(支持MySQL/PostgreSQL等)

SELECT 
    identifier,
    number,
    REGEXP_REPLACE(identifier, '-\d+$', '') AS identifier_edited
FROM your_table_name;

效果验证

运行上述代码后,会精准匹配并去除cat-123、green-489743这类末尾的-多位数后缀,而orange-fish5(数字前无连字符)、red-blue123(数字前是字母而非连字符)这类不符合规则的标识符会完全保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:35:23