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

Pandas DataFrame列中使用正则删除序数后缀并保留ST街道标识的方法

解决方案

核心使用正则捕获组保留数字内容,仅删除紧跟在数字后的序数后缀(st/th/nd/rd),街道含义的ST前没有数字,不会被匹配到,不存在误删风险。
你之前的写法错误原因是替换值填写了正则匹配规则而非捕获组引用,会直接把匹配到的数字+后缀整体替换为字面量\d{1,},因此无法保留数字部分。

正则逻辑

  • (\d+):捕获1位及以上的数字,记为第1个捕获组
  • (?:st|nd|rd|th):非捕获组,匹配所有常见的序数后缀
  • 新增忽略大小写参数适配大小写混合的场景
  • 替换时用\1引用第1个捕获组的数字,实现只删后缀留数字的效果

单字符串测试代码

import re

test_val1 = 'E 18TH ST AND A AVE'
test_val2 = 'E 31ST ST AND A AVE'

pattern = re.compile(r'(\d+)(?:st|nd|rd|th)', re.IGNORECASE)
print(pattern.sub(r'\1', test_val1))
# 输出:E 18 ST AND A AVE
print(pattern.sub(r'\1', test_val2))
# 输出:E 31 ST AND A AVE

Pandas整列应用代码

假设你的DataFrame名为df,待处理的地址列名为address,可直接调用pandas字符串方法对整列生效:

import pandas as pd

df['address'] = df['address'].str.replace(
    pat = r'(\d+)(?:st|nd|rd|th)',
    repl = r'\1',
    case = False,
    regex = True
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:54:03