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
相关产品推荐
相关产品推荐

