【发布时间】:2019-05-16 11:21:29
【问题描述】:
我写了下一个循环,但是当我运行它时,Spyder 向我显示下一条消息:
ValueError:Series 的真值不明确。使用a.empty, a.bool()、a.item()、a.any() 或 a.all()。
为什么会这样?因为如果不满足任何条件,我指定了要分配给列的值。
if 11 >= df['age'] <= 20:
df['age_enc'] = 20
elif 21 >= df['age'] <= 25:
df['age_enc'] = 25
elif 26 >= df['age'] <= 30:
df['age_enc'] = 30
elif 31 >= df['age'] <= 35:
df['age_enc'] = 35
elif 36 >= df['age'] <= 40:
df['age_enc'] = 40
elif 41 >= df['age'] <= 50:
df['age_enc'] = 50
elif 51 >= df['age'] <= 60:
df['age_enc'] = 60
else:
df['age_enc'] = 100;
【问题讨论】:
-
df['age']不是单个值,而是一整列。对于需要在 if 语句中比较多个值的情况,您必须使用any或all -
查看df的内容。 df['age'] 不是标量值,可能是矩阵或向量
-
另外,你的意思是
<=在所有条件的第一部分,而不是>= -
你想要
pandas.cut
标签: python pandas dataframe if-statement