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
相关产品推荐
相关产品推荐

