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

ANZ虚拟实习Pandas处理经纬度报IndexError及字符串替换失败问题

ANZ交易数据集问题排查解决方案

1. merchant_long_lat经纬度转换IndexError报错修复

报错根因

即使字段整体存在,只要单条数据存在以下情况,拆分后取索引1的操作就会触发越界:

  • 字段值为pandas原生空值NaN
  • 字段值为n/a/无效字符串,拆分后长度小于2
  • 字段值不存在空格分隔符

排查命令

运行以下代码定位异常行:

# 统计所有行拆分后的长度分布
print(data['merchant_long_lat'].str.split(' ').str.len().value_counts())
# 筛选出拆分后长度不足2的异常记录
print(data[data['merchant_long_lat'].str.split(' ').str.len() < 2]['merchant_long_lat'])

修复代码

在列表推导式中增加合法性校验,避免越界,同时优化重复拆分逻辑:

data["merchant_long_lat"] = [
    coords.split(" ")[::-1] 
    if isinstance(coords, str) and len(coords.split(" ")) == 2 
    else [None, None] 
    for coords in data.merchant_long_lat
]

2. n/a字符串替换不生效修复

失效根因

常见触发场景有3类:

  • 待替换的n/a不是字符串类型,是pandas原生NaN空值,字符串匹配规则无法命中
  • n/a存在前后空格、大小写变体(如N/a、N/A),精确匹配无法命中
  • 替换操作未设置inplace=True,也没有将结果赋值回原字段,修改未落地

排查命令

运行以下代码定位匹配失效原因:

# 统计原生空值数量
print("原生NaN数量:", data['merchant_long_lat'].isna().sum())
# 模糊匹配所有形式的n/a
print("变体n/a数量:", data['merchant_long_lat'].astype(str).str.strip().str.lower().eq('n/a').sum())

修复代码

统一处理所有空值和变体格式的n/a,确保替换生效:

# 先统一清洗格式,再批量替换所有无效值
data['merchant_long_lat'] = data['merchant_long_lat'].astype(str).str.strip().str.lower()
data['merchant_long_lat'] = data['merchant_long_lat'].replace(['n/a', 'nan'], None)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:54:02