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

基于正则分割Pandas列时如何避免丢失匹配的数字内容

问题原因

你原来的代码存在两个问题:

  1. 正则开头多余的.会额外匹配任意字符,匹配逻辑本身就不对
  2. str.split会把匹配到的分隔符内容直接丢弃,你用,\s\d作为分隔符,拆分时会把「逗号+空格+数字」整个删掉,自然会丢失地址开头的数字。

解决方法

你可以用正向肯定预查来写分隔正则,预查规则只做匹配判断、不会消耗对应字符,也就不会把数字丢掉:

import pandas as pd

data = {'Location': ['Building A, 100 First St City, State', 'Fire Station # 100, 2 Apple Row, City, State Zip', 'Church , 134 Baker Rd City, State']}
df = pd.DataFrame(data)

# 拆分逻辑:匹配逗号+空格,且后面紧跟数字,分隔符仅包含逗号+空格,不会消耗数字
df[['Location Name', 'Address']] = df['Location'].str.split(r',\s(?=\d)', expand=True)
# 可选:去掉名称前后的多余空格(适配第三个示例里Church后面多出来的空格)
df['Location Name'] = df['Location Name'].str.strip()

运行后得到的结果和你要求的目标输出完全一致。

你也可以用str.extract直接分组捕获两段内容,逻辑更直观不容易出错:

df[['Location Name', 'Address']] = df['Location'].str.extract(r'(.*?),\s(\d.*)')
df['Location Name'] = df['Location Name'].str.strip()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:06:06