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

Python按最后一个分隔符及后续大写值拆分DataFrame列

Pandas按特定规则拆分DataFrame列

需要将DataFrame的Value列按以下规则拆分为First和Last两列:

  • 拆分点为最后一个' - '分隔符,且该分隔符后必须紧跟由大写字母、空格和' - '组成的字符串(即结尾部分全为大写相关内容)

示例DataFrame

import pandas as pd

df = pd.DataFrame({
   'Value': ['Juan-Diva - HOLLS', 'Carlos - George - ESTE BAN - BOM', 'Javier Plain - Hotham Ham - ALPINE', 'Yul - KONJ KOL MON'],
})

预期输出

First            Last
0                  Juan-Diva           HOLLS
1            Carlos - George  ESTE BAN - BOM
2  Javier Plain - Hotham Ham          ALPINE
3                        Yul    KONJ KOL MON

解决方案

方法1:正则正向预查拆分

利用正则正向预查精准定位符合要求的分隔符,仅拆分一次:

df[['First', 'Last']] = df['Value'].str.split(r' - (?=[A-Z -]+$)', n=1, expand=True)

正则说明:

  • -:匹配目标分隔符(注意前后空格)
  • (?=[A-Z -]+$):正向预查,确保分隔符后的内容仅包含大写字母、空格和-,且一直到行尾
  • n=1:限制仅拆分一次,保证取到最后一个符合条件的分隔符

方法2:正则分组提取

通过正则分组直接提取First和Last部分:

df[['First', 'Last']] = df['Value'].str.extract(r'^(.*) - ([A-Z -]+)$', expand=True)

正则说明:

  • ^(.*):匹配从行首到目标分隔符前的所有内容(即First列)
  • -:匹配目标分隔符
  • ([A-Z -]+)$:匹配行尾的大写相关内容(即Last列)

两种方法均可得到预期的拆分结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:08:17