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

DataFrame添加uses_name列时遇TypeError:str与bool不支持|运算符

解决Pandas中添加uses_name列时的TypeError问题

这问题大概率是运算符优先级搞的鬼——在Pandas里用|(按位或)组合条件时,要是不给每个布尔判断单独加括号,就会因为优先级顺序错乱触发类型不匹配的报错。

正确实现代码

你只需要把每个相等判断用括号包裹,再用|组合起来就行:

users['uses_name'] = (users['password'] == users['first_name']) | (users['password'] == users['last_name'])

为什么之前会报错?

Pandas里==的优先级比|低,要是不加括号,代码会被Python解析成:

users['password'] == (users['first_name'] | users['password'])

这时候程序会尝试对字符串列first_name和password执行按位或操作,但字符串和布尔值(或字符串之间)根本不支持|运算,自然就抛出了TypeError: unsupported operand type(s) for |: 'str' and 'bool'的错误。

可选优化建议

如果需要忽略大小写匹配(比如密码是小写的hubbard,而姓氏是大写的Hubbard),可以统一转成小写后再判断:

users['uses_name'] = (users['password'].str.lower() == users['first_name'].str.lower()) | (users['password'].str.lower() == users['last_name'].str.lower())

这样就能正确生成你需要的uses_name列,像你提到的第12行那种密码和姓氏匹配的情况,会被正确标记为True。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:15:55