在Pandas中筛选数据时遇TypeError:float与bool类型不支持&操作符
问题解决:Pandas错误‘unsupported operand type(s) for &: 'float' and 'bool'’
错误原因
你定义的mask_actor和mask_genres是DataFrame子集,而非布尔索引(布尔类型Series)。当用&操作符组合时,Pandas会尝试对两个DataFrame逐元素运算,但DataFrame中包含float类型列(如vote_average),布尔值与float值无法执行&运算,因此触发类型不兼容错误。
修正代码
将掩码改为直接存储str.contains()返回的布尔Series,不要用df[]包裹:
# 直接获取布尔掩码,而非DataFrame子集 mask_actor = df.cast.str.contains("Bruce Willis") mask_genres = df.genres.str.contains("Adventure") & df.genres.str.contains("Family") from IPython.display import HTML # 用布尔掩码组合筛选目标数据 bruce = df.loc[mask_actor & mask_genres, ["title", "vote_average"]].sort_values(by="vote_average", ascending=False) sup = HTML(bruce.to_html(escape=False)) sup
补充提示
如果原数据存在缺失值,建议在str.contains()中添加na=False参数,避免因缺失值导致的额外报错:
mask_actor = df.cast.str.contains("Bruce Willis", na=False) mask_genres = df.genres.str.contains("Adventure", na=False) & df.genres.str.contains("Family", na=False)
内容的提问来源于stack exchange,提问作者Professor
相关产品推荐
相关产品推荐

