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

如何筛选有效地址数据?移除纯字符及仅含邮编的观测值

地址有效数字筛选方案

需求说明

筛选保留含有效数字地址的观测值,按以下两步执行过滤:

  • 第一步:移除仅包含5位邮编的记录
  • 第二步:移除地址中无剩余数字的纯字符记录

示例数据

import pandas as pd

# 中文示例DataFrame
d = {
    '地址列': ['圣迭戈县,加利福尼亚州', '4150尤特大道,圣迭戈,加利福尼亚州', '维斯塔德尔拉戈,佩里斯,加利福尼亚州,92570'],
    '省份列': ['prov_1', 'prov_2', 'prov_3']
}
df = pd.DataFrame(data=d)

原始DataFrame内容:

地址列 省份列
0        圣迭戈县,加利福尼亚州  prov_1
1  4150尤特大道,圣迭戈,加利福尼亚州  prov_2
2  维斯塔德尔拉戈,佩里斯,加利福尼亚州,92570  prov_3

实现代码

# 第一步:移除仅含邮编的记录
# 匹配结尾为5位邮编且无其他数字的条目,取反保留有效记录
df = df[~(df['地址列'].str.contains(r'\b\d{5}\b$', regex=True) & ~df['地址列'].str.contains(r'\d{1,4}\b', regex=True))]

# 第二步:移除纯字符地址
# 先移除地址中的5位邮编,再检查剩余内容是否包含数字
df['临时地址'] = df['地址列'].str.replace(r'\b\d{5}\b', '', regex=True)
df = df[df['临时地址'].str.contains(r'\d', regex=True)]

# 删除临时列
df = df.drop('临时地址', axis=1)

print(df)

输出结果

地址列 省份列
1  4150尤特大道,圣迭戈,加利福尼亚州  prov_2

逻辑说明

  1. 移除仅含邮编的记录:用正则\b\d{5}\b$定位结尾的5位邮编,同时校验地址中是否存在1-4位的其他数字,仅保留有非邮编数字的记录。
  2. 移除纯字符地址:先剥离地址中的5位邮编,再检查剩余内容是否包含数字,过滤掉无数字的纯字符地址。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 18:12:44