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

Pandas如何使用正则删除DataFrame列中多分隔符后的所有内容

pandas 正则提取COL2目标值方案

你可以直接通过str.replace()配合正则捕获组实现需求,代码兼容Name=前后存在冗余字符的场景,鲁棒性更强:

import pandas as pd

# 构造示例测试数据
tab = pd.DataFrame({
    'COL1': ['A', 'B', 'C', 'D'],
    'COL2': [
        'Name=canis_lupus3099 HHYUIO jj6§è7',
        'Name=bomba009 JJIJJ;HHJKN',
        'Name=Test_test788_eheh;NHHhh',
        'Name=UYEYEHJ0909EEHH:HEEH Jk G'
    ]
})

# 核心处理逻辑
tab['COL2'] = tab['COL2'].str.replace(
    pat=r'.*(Name=[^\s;:]+).*',
    repl=r'\1',
    regex=True
)

正则规则说明

模式串r'.*(Name=[^\s;:]+).*'各部分含义:

  • 开头.*:匹配Name=前缀前可能存在的任意长度冗余字符,若你的数据COL2固定以Name=开头可省略该段
  • (Name=[^\s;:]+):捕获组,是最终要保留的内容:
    • 固定匹配Name=前缀
    • [^\s;:]+:匹配连续的非分隔符字符,分隔符包含空白符、分号、冒号,遇到第一个分隔符就停止匹配
  • 结尾.*:匹配有效取值后到字符串末尾的所有冗余内容

替换值r'\1'代表仅保留第一个捕获组匹配到的内容,其余匹配到的内容全部删除。

简化写法(适用固定格式场景)

如果你的COL2列固定以Name=开头,不存在前置冗余内容,可以用更简洁的写法,直接删除第一个分隔符及之后的所有内容:

tab['COL2'] = tab['COL2'].str.replace(r'[\s;:].*', '', regex=True)

处理后输出结果和预期完全一致:

COL1                     COL2
0    A      Name=canis_lupus3099
1    B           Name=bomba009
2    C  Name=Test_test788_eheh
3    D  Name=UYEYEHJ0909EEHH

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 04:24:13