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

pandas df.replace替换列值报错TypeError: Unhashable type:'list'

错误原因

pandas.Series.replace() 接收字典作为映射参数时,要求字典的键必须是可哈希的标量值。你写的代码里把列表(可变类型,不可哈希)作为字典键,直接触发了TypeError: unhashable type: 'list'报错,这种写法不符合pandas replace方法的参数规则,无法实现「多个原始值映射到同一个目标值」的需求。

可行修复方案
  • 方案1:展开映射键值对(最易读)
    把每个需要匹配的原始值单独作为字典键,指向同一个替换目标即可,不需要用列表包裹:
    ort_raw['Location'] = ort_raw['Location'].replace({
        '1': 'remote',
        1: 'remote',
        '0': 'in_lab',
        0: 'in_lab'
    })
    
  • 方案2:统一列类型后映射(代码更简洁,避免后续类型问题)
    你的列里同时混杂了字符串格式、整数格式的0/1,可以先把整列转为同类型再做替换,减少冗余的键值对:
    # 先将整列统一转为整数,再执行映射
    ort_raw['Location'] = ort_raw['Location'].astype(int).replace({
        1: 'remote',
        0: 'in_lab'
    })
    

    提示:如果列内存在无法转为整数的异常值,先完成异常值清洗再执行类型转换,避免触发新的报错。

  • 方案3:多列替换兼容写法
    如果后续需要同时对多列做替换规则配置,可以用列名作为一级键的嵌套字典写法,扩展性更强:
    ort_raw = ort_raw.replace({
        'Location': {
            '1': 'remote',
            1: 'remote',
            '0': 'in_lab',
            0: 'in_lab'
        }
        # 其他列的替换规则可以继续往下追加
    })
    

内容的提问来源于stack exchange,提问作者providence.kps

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:24:33