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

如何使用Python从表格地址列中拆分提取郊区/地点名称

Python 提取地址中郊区字段解决方案

你可以通过Python实现该需求,提供两种适配方案:

方案1:基于道路类型规则匹配(推荐)

实现逻辑

你的示例地址结构统一为「门牌号+道路名+道路类型标识」后接郊区名称,仅部分地址带逗号分隔,因此通过识别道路类型关键词的位置即可拆分两部分内容,准确率更高、实现更简单。

依赖安装

pip install pandas

完整代码

import pandas as pd

# 定义道路类型关键词,不区分大小写
ROAD_TYPES = {'road', 'rd', 'court', 'drive', 'lane', 'dr', 'way', 'street', 'crt', 'st'}

def split_address(address):
    # 去除逗号、首尾空格,分割为单词列表
    clean_addr = address.replace(',', ' ').strip()
    words = clean_addr.split()
    # 倒序查找第一个道路类型关键词的索引
    split_idx = -1
    for i in range(len(words)-1, -1, -1):
        if words[i].lower() in ROAD_TYPES:
            split_idx = i
            break
    # 拆分地址和郊区,郊区首字母大写
    if split_idx != -1:
        addr_part = ' '.join(words[:split_idx+1])
        suburb_part = ' '.join([w.capitalize() for w in words[split_idx+1:]])
    else:
        addr_part = address
        suburb_part = ''
    return pd.Series([addr_part, suburb_part])

# 读取CSV数据,替换为你的实际文件路径,假设地址列名为Address
df = pd.read_csv('你的输入文件路径.csv')
df[['Address', 'Suburb']] = df['Address'].apply(split_address)

# 输出结果查看
print(df)
# 保存为新CSV
df.to_csv('提取结果.csv', index=False)

方案2:基于NLTK命名实体识别

实现逻辑

通过NLTK的词性标注、命名实体识别功能,提取地址中的地理实体(GPE类型)作为郊区名称,适配结构更复杂的地址场景。

依赖安装

pip install pandas nltk

完整代码

import pandas as pd
import nltk
from nltk import word_tokenize, pos_tag, ne_chunk

# 首次运行需要下载nltk依赖包
nltk.download('punkt')
nltk.download('averaged_perceptron_tagger')
nltk.download('maxent_ne_chunker')
nltk.download('words')

def extract_suburb_nltk(address):
    clean_addr = address.replace(',', ' ').strip()
    tokens = word_tokenize(clean_addr)
    pos_tags = pos_tag(tokens)
    chunks = ne_chunk(pos_tags)
    suburb = []
    for chunk in chunks:
        if hasattr(chunk, 'label') and chunk.label() == 'GPE':
            suburb.append(' '.join(c[0] for c in chunk).capitalize())
    # 取最后一个GPE实体作为郊区
    return ' '.join(suburb[-1:]) if suburb else ''

# 读取和处理数据逻辑同方案1
df = pd.read_csv('你的输入文件路径.csv')
df['Suburb'] = df['Address'].apply(extract_suburb_nltk)

以上两种方案对你提供的示例数据测试均可得到你预期的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:45:05