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

如何在DataFrame中过滤以b开头后跟随机6位数字的字符串

用正则表达式实现Pandas中匹配固定前缀+6位数字的筛选需求

嘿,刚好碰到过类似的场景,用Pandas的字符串方法结合正则表达式就能轻松搞定!

你的需求是匹配b开头后跟6位随机数字的片段,完全可以通过str.contains()搭配正则规则实现,具体步骤如下:

1. 筛选包含目标片段的行

假设你的DataFrame名为df,待处理的列是target_col,执行以下代码就能筛选出符合条件的行:

# 筛选包含"b+6位数字"格式的行,na=False避免空值报错
filtered_rows = df[df['target_col'].str.contains(r'b\d{6}', na=False)]

正则规则解释:

  • r'':表示原始字符串,防止Python转义字符干扰正则匹配
  • b:匹配固定的前缀字符b
  • \d:匹配任意一个数字(0-9)
  • {6}:指定前面的\d必须连续出现6次,也就是正好6位数字

2. 提取6位数字本身

如果除了筛选,还需要把这6位数字单独提取出来作为新列,可以用str.extract():

# 捕获并提取b后面的6位数字,生成新列extracted_id
df['extracted_id'] = df['target_col'].str.extract(r'b(\d{6})')

这里的括号()是正则的捕获组,会把括号内匹配到的内容单独提取出来,结果就是你要的6位数值片段。

额外注意事项

  • 如果需要忽略大小写(比如可能出现B开头的情况),可以添加case=False参数:
    df[df['target_col'].str.contains(r'b\d{6}', na=False, case=False)]
    
  • 若列中存在NaN值,一定要加上na=False,否则会因无法判断空值的匹配结果而抛出错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:29:18