query() 和 isin() 组合在 Kaggle 笔记本中不起作用

query() and isin() combination is not working in Kaggle notebook

提问人:beridzeg45 提问时间:4/17/2023 更新时间:4/17/2023 访问量:35

问:

我想在 Kaggle 笔记本中使用 .query() 和 .isin() 函数过滤数据帧。

standard_stats=standard_stats.query('`Unnamed: 0_level_0_Player`.isin(["Squad Total","Opponent Total"])==False')

Unnamed: 0_level_0_Player是列的名称,[“Squad Total”,“Opponent Total”] 是值列表,不应在筛选的数据帧中。

运行此代码后,出现以下错误:TypeError: unhashable type: 'numpy.ndarray'。

当我在 Jupyter Notebook 中运行代码时,我没有收到错误。 如何解决该问题?

蟒蛇 isin

评论

0赞 henning 4/17/2023
这可能不是一个完整的解决方案,但您使用的是反引号:' 而不是单引号:'
0赞 beridzeg45 4/17/2023
我正在使用反引号,因为当列名包含空格时,Pandas 查询函数中需要它。当我在 Jupyter Notebook 中运行相同的代码时,没有问题
0赞 alec_djinn 4/17/2023
请提供一个最小的可重现示例。如果您的问题包括 pandas 数据帧,请提供可重现的 pandas 示例
1赞 beridzeg45 4/17/2023
Kaggle 笔记本可以在以下链接上找到: kaggle.com/code/beridzeg45/notebook3a64db585b/edit

答:

0赞 achrafhamid 4/17/2023 #1

.isin() 函数不接受您传递的 np 数组,因为 np 数组是不可哈希的对象。 尝试使用 .loc()

standard_stats = standard_stats.loc[~standard_stats['Unnamed: 0_level_0_Player'].isin(["Squad Total", "Opponent Total"])]

评论

0赞 beridzeg45 4/17/2023
我仍然收到同样的错误
0赞 achrafhamid 4/17/2023
我修改了我的答案,@beridzeg45你能检查一下 .loc()