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

Pandas映射出现KeyError时,如何忽略错误或删除对应行?

问题场景

现有如下DataFrame:

import pandas as pds
import numpy as np

data = pds.DataFrame({
    'food': ['bacon','porc braisé','bacon','Pastrami','corned beef','BAcon','pastrami','jambon','saumon fumé', 'bacond'],
    'gr' : [4,3,6,7.5,8,3,5,6,7, 2]
})

映射字典:

nourr= { 
    'bacon':'porc',
    'porc braisé':'porc', 
    'pastrami':'boeuf',
    'corned beef':'boeuf',
    'jambon':'porc',
    'saumon fumé': 'poisson'
}

原映射代码在遇到food列中字典不存在的键(比如bacond)时,会抛出KeyError: 'bacond',需要避免报错并处理这类不匹配的情况。


两种可行方案

方案1:用字典get()方法(最简单)

字典的get()方法允许指定默认值,键不存在时直接返回默认值,不会触发异常。修改后的代码:

# 用NaN填充不匹配项
data["animal"] = data["food"].map(lambda x: nourr.get(x.lower(), np.nan))

# 或者用自定义文本填充,比如“未知”
# data["animal"] = data["food"].map(lambda x: nourr.get(x.lower(), '未知'))

方案2:自定义函数加异常捕获(更灵活)

如果需要在处理不匹配项时执行额外逻辑,可以写个函数用try-except捕获KeyError:

def map_food(food_str):
    try:
        return nourr[food_str.lower()]
    except KeyError:
        # 这里可以加额外处理逻辑,比如打印日志
        return np.nan

data["animal"] = data["food"].apply(map_food)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:10:47