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

Pandas TypeError问题求助:无法对bool类型数组与bool标量执行rand_操作

解决Pandas中使用.loc条件赋值时的TypeError问题

你遇到的这个错误其实是运算符优先级在搞鬼!咱们先看你写的代码:

dfT.loc[dfT.state == "CANCELLED" & (dfT.Activity != "created"), "Activity"] = "cancelled"

在Python里,位运算符&的优先级比比较运算符==、!=要高,所以这段代码会先执行"CANCELLED" & (dfT.Activity != "created")——你想想,字符串和布尔数组怎么能做位运算呢?这就直接触发了类型不匹配的错误,也就是你看到的TypeError: Cannot perform 'rand_' with a dtyped [bool] array and scalar of type [bool]。

修正方法

只需要把每个独立的比较条件都用括号包裹起来,让Pandas先计算每个条件的布尔结果,再进行逻辑与操作:

dfT.loc[(dfT.state == "CANCELLED") & (dfT.Activity != "created"), "Activity"] = "cancelled"

验证效果

用你给出的示例表格测试:

IDActivitystate
1createdCANCELLED
1completedCANCELLED
2createdFINNISHED
2completedFINISHED
3createdREJECTED
3rejectedREJECTED

修正后的代码会把state为CANCELLED且Activity不是created的那一行(ID=1,Activity=completed)的Activity值改成cancelled,最终表格会变成:

IDActivitystate
1createdCANCELLED
1cancelledCANCELLED
2createdFINNISHED
2completedFINISHED
3createdREJECTED
3rejectedREJECTED

这样就完全符合你的需求啦!

内容的提问来源于stack exchange,提问作者Alde Joshua Wibowo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 17:18:09