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

如何使用regex仅按首次匹配分割pandas DataFrame列拆分捐赠人姓名与地址

解决方案

问题原因

  • 现有代码未指定拆分次数,pandas的str.split方法默认n=-1,会对所有匹配到的规则执行拆分
  • 直接用\d作为拆分规则会把地址开头的数字当作分隔符删除,无法得到完整地址
  • 第二种换行格式的内容没有先处理换行符,会导致拆分逻辑失效

修正代码

import pandas as pd

url = ("http://www.voterfocus.com/CampaignFinance/candidate_pr.php?op=rp&e=8&c=munmiamibeach&ca=64&sdc=116&rellevel=4&dhc=774&committee=N")
dfs = pd.read_html(url)
df = dfs[0]

# 先替换列内的换行符为空格,统一格式
df['Contributor'] = df['Contributor'].str.replace(r'\n', ' ', regex=True)

# 方法1:用str.extract直接匹配两组内容,兼容性更强
df[['Col1', 'Col2']] = df['Contributor'].str.extract(r'^(\D+)(.*)$', expand=True)

# 去除两列的首尾空白字符
df['Col1'] = df['Col1'].str.strip()
df['Col2'] = df['Col2'].str.strip()

可选split实现方式

如果坚持用split方法实现,可按如下调整,核心是加零宽断言避免吞掉数字,加n=1限制仅拆分1次:

df[['Col1', 'Col2']] = df['Contributor'].str.split(r'(?=\d)', n=1, expand=True)
df['Col1'] = df['Col1'].str.strip()
df['Col2'] = df['Col2'].str.strip()

规则说明

  • \D匹配所有非数字字符,会从开头一直匹配到第一个数字出现的位置,刚好对应捐赠人姓名
  • .*匹配第一个数字之后的所有内容,对应完整地址
  • n=1参数限制str.split仅执行1次拆分,不会拆分后续地址内的数字

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:45:04