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

Pandas数据框中字符串切片与列表推导式报错问题求助

问题解决:提取Code列第三个字符并映射大洲名称

报错原因

你遇到的IndexError: string index out of range,不是列表遍历范围的问题,而是数据框中存在部分Code字符串长度小于3的记录——虽然首尾的Code长度足够,但中间有短字符串,访问索引2时就会触发越界错误。

解决方案

直接用pandas的矢量化操作处理,无需转成列表,更高效且能处理异常情况:

  1. 排查无效Code(可选但推荐)
    先找出所有长度不足3的Code记录,确认数据问题:
invalid_codes = df[df["Code"].str.len() < 3]
print(invalid_codes)
  1. 提取大洲编码并映射名称
    一步完成提取第三个字符、映射大洲名称,同时处理长度不足的情况:
# 定义编码与大洲的映射关系
continent_mapping = {
    "1": "欧洲",
    "2": "非洲",
    "3": "美洲",
    "4": "亚洲",
    "5": "大洋洲"
}

# 生成Continent列
df["Continent"] = df["Code"].apply(
    lambda x: continent_mapping.get(x[2], None) if len(x) >= 3 else None
)

原有代码问题说明

你原来的列表推导式[codelist[x][2] for x in range(0,len(codelist)-1)]存在两个问题:

  • 遍历范围range(0, len(codelist)-1)会漏掉最后一个元素(range是左闭右开规则)
  • 未处理长度不足3的Code,这才是触发报错的核心原因

用pandas的apply或str方法处理,既能避免手动遍历的繁琐,也能更优雅地处理异常数据。

内容的提问来源于stack exchange,提问作者Фома Ф

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 11:03:25