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

如何对Pandas DataFrame列逐行执行scourgify地址标准化并追加结果

解决方案

首先安装所需依赖:

pip install pandas scourgify

完整处理代码如下:

import pandas as pd
from scourgify import normalize_address_record

# 构造模拟数据集
data = [['a', '123 southwest Main street, Boring, or, 97203'], ['b', '4285 balsam la n plymouth mn 55441'], ['c', '632 bloomington ave s minneapolis mn 55417']]
df = pd.DataFrame(data, columns = ['id', 'address_original'])

# 定义地址标准化函数,增加异常处理避免个别地址解析失败中断全量流程
def normalize_addr(addr_str):
    try:
        return normalize_address_record(addr_str)
    except:
        # 解析失败的地址返回空字段,可根据需求调整返回规则
        return {
            'address_line_1': '',
            'address_line_2': '',
            'city': '',
            'state': '',
            'postal_code': ''
        }

# 批量处理地址列,将返回的字典结构转为表格结构
normalized_df = df['address_original'].apply(normalize_addr).apply(pd.Series)

# 拼接原始表和标准化后的字段
df = pd.concat([df, normalized_df], axis=1)

处理后最终的DataFrame样例如下:

idaddress_originaladdress_line_1address_line_2citystatepostal_code
a123 southwest Main street, Boring, or, 97203123 SW MAIN STBORINGOR97203
b4285 balsam la n plymouth mn 554414285 BALSAM LN NPLYMOUTHMN55441
c632 bloomington ave s minneapolis mn 55417632 BLOOMINGTON AVE SMINNEAPOLISMN55417

关键逻辑说明

  • apply方法对应你熟悉的R语言中apply/purrr::map系列函数的功能,可以对整列的每一行值批量执行操作
  • 异常处理为可选配置,建议保留,实际业务中存在大量格式不规范的地址可能触发scourgify的解析错误
  • pd.concat可以直接按行索引对齐拼接原始表和标准化后的字段,无需额外做匹配操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:36:03