如何使用pyzipcodes从DataFrame的邮编列生成州列?
从邮编提取对应州信息(基于pyzipcodes库)
核心思路
你已经能获取到ZipCode对象,直接访问该对象的.state属性就能拿到州代码,再结合pandas的apply方法批量处理DataFrame的邮编列即可。
实现代码
- 导入依赖库
import pandas as pd import pyzipcodes
- 定义提取函数(包含异常处理)
def get_state(zip_code): try: # 查询邮编对应的ZipCode对象 zip_obj = pyzipcodes.get(str(zip_code)) # 直接提取state属性 return zip_obj.state except: # 处理无效/不存在的邮编,返回空值或自定义内容 return None
- 为DataFrame添加state列
# 替换成你实际的邮编列名 df1['state'] = df1['邮编'].apply(get_state)
注意事项
- 如果你的邮编列是数值类型,必须转成字符串后再查询(pyzipcodes要求输入字符串格式的邮编),上面的函数里已经用
str(zip_code)做了转换 - 若存在格式脏数据(比如带空格的邮编),可以先清洗:
df1['邮编'] = df1['邮编'].astype(str).str.strip() try-except块用于避免无效邮编导致程序中断,你可以根据需求修改异常返回值,比如改成return '未知'
内容的提问来源于stack exchange,提问作者user21006068
相关产品推荐
相关产品推荐

