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

处理全量地址列时地理编码报Attribute Error的原因是什么?

解决地理编码时的AttributeError问题

问题原因

地址列虽标记为object类型,但实际包含float类型的空值(比如NaN)。前10行测试时刚好都是字符串格式的地址,所以无报错;整列处理时遇到NaN,地理编码函数内部调用encode方法时,float类型没有该属性,因此触发AttributeError: 'float' object has no attribute 'encode'。

解决方案

方案1:统一转换地址列类型并清理空值

先将所有地址转为字符串,再替换掉转成字符串的'nan':

import pandas as pd

# 转换为字符串类型
df['address'] = df['address'].astype(str)
# 替换字符串形式的空值为None
df['address'] = df['address'].replace('nan', None)

# 再执行地理编码
df['geo_address'] = df['address'].apply(geocode)

方案2:过滤空值后再处理

只对非空的地址行应用地理编码:

df['geo_address'] = df['address'].apply(lambda x: geocode(x) if pd.notna(x) else None)

方案3:增加类型校验的安全函数

自定义函数判断地址是否为有效字符串,再执行编码:

def safe_geocode(address):
    if isinstance(address, str) and address.strip():
        return geocode(address)
    return None

df['geo_address'] = df['address'].apply(safe_geocode)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:45:37