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

如何检查Pandas多索引DataFrame中指定索引是否存在?解决哈希错误

检查Pandas MultiIndex中是否存在指定索引对

你碰到的TypeError: unhashable type: 'list'问题很明确——你用了列表[007, 6000]去判断索引存在性,但Pandas的MultiIndex里的每一组索引是元组类型,而列表是不可哈希的,没法被索引结构识别。

正确的实现方式

直接用元组代替列表就行,注意要和你索引的类型匹配(看你的示例里userid是007这种带前导零的格式,应该是字符串类型,所以要加引号):

if ('007', '6000') in df.index:
    print('it works')

如果你的索引实际是数字类型(比如007存储为整数7),那就去掉引号用数字元组:

if (7, 6000) in df.index:
    print('it works')

批量检查的进阶方法

要是你需要一次性检查多组索引,用df.index.isin()会更方便,它能返回布尔数组告诉你哪些索引存在:

# 检查单组索引
if df.index.isin([('007', '6000')]).any():
    print('该索引存在')

# 批量检查多组索引
check_list = [('007', '6000'), ('009', '3000')]
result = df.index.isin(check_list)
print(result)  # 输出对应每个索引是否在check_list中的布尔值

为什么原来的代码报错?

简单来说:Pandas的索引查找依赖元素的可哈希性,列表是可变对象(可以随时修改里面的元素),所以不可哈希;而元组是不可变对象,具备可哈希性,符合索引查找的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:54:45