首页 > 解决方案 > python pyzipcode库检查邮政编码是否丢失

问题描述

我有一个名为 dfZ 的数据框,其中包含一个邮政编码列和一个值列。我正在使用邮政编码和“pyzipcode”库来查找城市、州、纬度经度等。

当库中存在邮政编码时,下面的代码效果很好,

 import pyzipcode
from pyzipcode import ZipCodeDatabase
zipDB = ZipCodeDatabase()
   
dfZ['State'] = dfZ['Zip'].apply(lambda x:zipDB[int(x)].state)
dfZ['LAT'] = dfZ['Zip'].apply(lambda x:zipDB[int(x)].latitude)
dfZ['LNG'] = dfZ['Zip'].apply(lambda x:zipDB[int(x)].longitude)

但是例如,如果邮政编码是 727,则库中不存在此内容并抛出错误

我尝试使用 if 函数修改代码以检查它是否为空,但无法识别。

pd.isnull(zipDB[727])

错误信息

编辑错误消息的文本

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)

<ipython-input-71-08eb3623e336> in <module>
----> 1 pd.isnull(zipDB[727])

~\Anaconda3\lib\site-packages\pyzipcode\__init__.py in __getitem__(self, zipcode)
    179         data = self.get(str(zipcode).zfill(5))
    180         if data is None:
--> 181             raise KeyError(f"Couldn't find zipcode: '{zipcode}'")
    182         else:
    183             return data
KeyError: "Couldn't find zipcode: '727'"

有没有办法编写代码,这样如果遇到未知的邮政编码,就会把它们留作 Nan

标签: pythonzipcode

解决方案


推荐阅读