我正在使用python3。我使用数据库查找IP的国家/地区,如果IP不在数据库中,则返回None或AAA。完成所有过程后,在数据框中的新列中显示返回结果(国家名称或None或AAA)。具体来说,我在数据框中有三列分别是日期时间和IP,我想添加一个新列“ code1”,显示国家名称或此IP无。
我在代码中添加了错误异常,但是它不起作用。代码和错误消息如下。有人可以帮忙吗?
以下是将“从geoip2.errors导入AddressNotFoundError”添加到我的代码中时的报告。我想这意味着在数据库中找不到地址时,它什么也不会返回,而是返回“ none”(请参见,有一个空的方括号),因此,当我使用df ['code1'] = code1时,它将报告值的数量不等于索引的数量。 (我不确定)。
实际上,我的目标是在原始数据框中添加一列,以报告每个IP的国家/地区,如果该国家/地区不在数据库中,则不报告。还有其他方法可以代替“ df ['code1'] = code1”吗?任何帮助将不胜感激。谢谢
答案 0 :(得分:0)
异常与Python中的其他任何对象一样。它们必须在某处定义。在这种情况下,AddressNotFoundError
未定义,因此解释器不知道它的含义。
它必须被导入:
from geoip2.errors import AddressNotFoundError
或
import geoip2.errors.AddressNotFoundError
请参阅geoip2 documentation的相关部分。
答案 1 :(得分:0)
您可以只留下AddressNotFoundError,而不必这样做
try:
response1 = reader.country(row1)
code1.append(response1.country.iso_code)
except:
response1 = None
但是如果您只想除AddressNotFoundError之外,则在顶部做
import geoip.errors.AddressNotFoundError