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

如何使用pandas.str.replace通过正则匹配结果替换整列街道名称数据

Pandas 街道名称字段正则提取实现方案

你要的效果可以通过捕获目标内容+全串替换的逻辑实现,核心是用正则匹配整个原字符串,仅保留你需要的捕获组内容,具体代码如下:

# 核心替换逻辑
df['street'] = df['street'].str.replace(r'^(\d+ +[a-zA-Z]{0,3}).*$', r'\1', regex=True)

正则说明

  • ^ 匹配字符串起始位置
  • (\d+ +[a-zA-Z]{0,3}) 是第一个捕获组,对应你要保留的内容:1个及以上数字 + 1个及以上空格 + 最多3个英文字母
  • .*$ 匹配捕获组之后到字符串结尾的所有内容,这部分会被全部删除
  • 替换参数\1代表取第一个捕获组的内容,直接把整个原字符串替换为目标内容

测试效果验证

你可以用测试数据确认效果:

import pandas as pd
# 构造测试数据
test_df = pd.DataFrame({
    'raw_street': [
        '3762 pearl street',
        '43 milford st.',
        '123 main avenue',
        '89 oak blvd.'
    ]
})
test_df['processed_street'] = test_df['raw_street'].str.replace(r'^(\d+ +[a-zA-Z]{0,3}).*$', r'\1', regex=True)
print(test_df)

处理后结果和你要求的完全匹配:

raw_streetprocessed_street
3762 pearl street3762 pea
43 milford st.43 mil
123 main avenue123 mai
89 oak blvd.89 oak

可选优化

如果你的数据里街道名称开头可能存在多余的前导空格,可以把正则调整为r'^\s*(\d+ +[a-zA-Z]{0,3}).*$',自动过滤开头的空白字符。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:45:04