ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.al

解决方案

本文中的解决方法,只限于一部分问题,可能不通用。因为楼主在跑python代码时经常遇到这个问题,以前是怎么解决的都已经忘记了,今天又查了一大通,故记录下来:

training_examples["latitude_0_to_35"]=1 if (training_examples["latitude"]>=0 and training_examples["latitude"]<=35) else 0  
# 想用这样的赋值语句,结果报错了(PS: training_examples是dataframe类型)

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

故想实现上面的方法,改用如下方案:

training_examples["latitude_0_to_35"]= (training_examples["latitude"]>=0) & (training_examples["latitude"]<=35)  
# 此处用 & 应该是因为training_examples["latitude"]存在多个value值,得“按位”比较。如果是单纯的数值用and就是可以的,可见最后的例子。
training_examples["latitude_0_to_35"] = training_examples["latitude_0_to_35"].astype('int')
#这一步是将得到的true和false转化为1和0,直接bool型变为int型


IN:  a = 1 if (3>2 and 4>3) else 0
IN:  a
OUT: 1
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值