我试着在Pandas数据帧上做一个简单的if/else语句。我得到了错误The truth value of a Series is ambiguous.
,所以我尝试使用any() all()
。使用这些选项只会导致表达式的if
或else
部分求值。我的数据如下:
state district democrat republican totalvotes votestowin rwasted
Maine 1 227546.0 164569.0 392115.0 196057.5 -31488.5
Maine 2 159081.0 192878.0 351959.0 175979.5 16898.5
Maryland 1 103622.0 242574.0 346196.0 173098.0 69476.0
Maryland 2 192183.0 102577.0 294760.0 147380.0 -44803.0
Maryland 3 214640.0 115048.0 329688.0 164844.0 -49796.0
我的密码是
for idx,row in data.iterrows():
if (data['democrat'] >= data['republican']).all():
data['rwasted'] = data['republican']
else:
data['rwasted'] = data['republican'] - data['votestowin']
您可以看到它只计算代码的else
部分。有什么办法让它工作吗?为什么它首先返回一个错误呢?这个表达在我看来很直截了当。你知道吗
.all()
是应用于整个Series
而不是单个row
的函数。你在这里混淆视听。要进行逐行比较(如您所愿):请参阅@9769953的答案,以获得在数据帧中应用它的更简洁的方法,但这与
iterrows
方法类似你需要一个面具:
不需要if else语句,也不需要for循环。您必须考虑数据帧的行和列,而不是单元格。你知道吗
相关问题 更多 >
编程相关推荐