通八洲科技

如何在包含多值的列中精确搜索指定演员?

日期:2026-01-01 00:00 / 作者:霞舞

使用pandas的`str.contains()`方法搜索含多个演员名的字符串列时,若列中存在缺失值(nan),需显式设置`na=false`参数,否则会因布尔掩码无法处理nan而报错。

在电影数据集中,cast列通常以字符串形式存储多位演员姓名(例如"Leonardo DiCaprio, Kate Winslet, Billy Zane"),这种结构虽便于展示,却不利于精确查询。直接调用 df['cast'].str.contains('Leonardo DiCaprio') 会触发 Cannot mask with non-boolean array containing NA / NaN values 错误——根本原因在于:当cast列含有NaN值时,str.contains()默认返回NaN而非True/False,导致布尔索引失效。

✅ 正确做法是添加 na=False 参数,强制将所有缺失值视为 False,确保返回纯布尔数组:

# 正确:安全处理 NaN,返回严格布尔索引
actor_movies = bd[bd['cast'].str.contains('Leonardo DiCaprio', na=False)]

⚠️ 注意事项:

总结:na=False 是处理含缺失值文本列搜索的必备参数;结合 case、regex 等参数可进一步提升检索准确性和鲁棒性。