Kaggle Notebook中query()与isin()组合报错问题求助
解决Kaggle Notebook中.query()结合.isin()的报错问题
出现TypeError: unhashable type: 'numpy.ndarray'的原因是Kaggle环境中,.query()的字符串解析器会把括号里的列表自动转换为numpy数组,而numpy数组是不可哈希类型,导致报错(Jupyter的解析逻辑和Kaggle有差异,所以能正常运行)。以下是几种可行的解决方法:
方法一:引用外部变量+取反操作
先把要排除的值定义为外部变量,用@符号在.query()中引用,同时用~替代==False做取反,更符合pandas规范:exclude_list = ["Squad Total", "Opponent Total"] standard_stats = standard_stats.query('~`Unnamed: 0_level_0_Player`.isin(@exclude_list)')方法二:直接使用布尔索引(推荐)
绕过.query()的字符串解析问题,直接在DataFrame上做布尔过滤,兼容性更强:exclude_list = ["Squad Total", "Opponent Total"] standard_stats = standard_stats[~standard_stats['Unnamed: 0_level_0_Player'].isin(exclude_list)]方法三:将列表改为元组
元组是可哈希类型,直接在.query()的字符串里用元组替代列表即可:standard_stats = standard_stats.query('`Unnamed: 0_level_0_Player`.isin(("Squad Total","Opponent Total"))==False')
内容的提问来源于stack exchange,提问作者beridzeg45
相关产品推荐
相关产品推荐

