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

Python中如何将ez-address-parser解析结果拆分为单独列?

如何将ez-address-parser的解析结果拆分为单独列

要把解析后的元组列表拆分成单独列,核心是先将每个地址的解析结果转换为键值对字典,再把字典展开成DataFrame,最后和原数据合并。具体步骤如下:

1. 定义解析结果转字典的函数

考虑到部分字段(比如示例中的PostalCode)会返回多个值,我们可以将同类型的字段值合并为一个字符串:

from ez_address_parser import AddressParser
import pandas as pd

ap = AddressParser()

def parse_address(address_str):
    parsed_items = ap.parse(address_str)
    address_dict = {}
    for value, field in parsed_items:
        # 合并同字段的多个值(如邮编的两部分)
        if field in address_dict:
            address_dict[field] += f" {value}"
        else:
            address_dict[field] = value
    return address_dict

2. 应用函数并展开为列

先将解析函数应用到地址列,得到包含字典的Series,再把字典展开成独立列,最后和原DataFrame合并:

# 读取原数据(注意列名大小写,确保和你的数据一致)
df = pd.read_csv(r'C:/Users/me/OneDrive/Documents/my_file.csv', encoding='latin-1')

# 生成解析后的字典Series
df['parsed_dict'] = df['address'].apply(parse_address)

# 将字典展开为DataFrame
parsed_df = pd.DataFrame(df['parsed_dict'].tolist())

# 合并原数据和解析后的列
final_df = pd.concat([df.drop('parsed_dict', axis=1), parsed_df], axis=1)

3. 导出结果

最后将合并后的DataFrame导出为CSV:

final_df.to_csv(r'C:/Users/me/OneDrive/Documents/python_file.csv', index=False, header=True)

最终效果

处理后的DataFrame会新增StreetNumber、StreetName、StreetType、Municipality、Province、PostalCode等单独列,每个字段对应解析出的值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:55:23