解决方案
本文中的解决方法,只限于一部分问题,可能不通用。因为楼主在跑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
本文介绍了在使用Python的Pandas库处理DataFrame时,如何正确地进行条件赋值操作,特别是针对包含多个元素的情况。文章通过一个具体的示例,解释了为何直接使用逻辑运算符会导致错误,并提供了一个有效且简洁的解决方案。
901

被折叠的 条评论
为什么被折叠?



