根据以下代码编写二进制变量的问题。如果metric
小于或等于30,我希望变量feature
为1,否则为0。当我运行此代码时,我收到以下错误:ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
if df1.Feature <= 30:
df1.metric=1
else:
df1.metric=0
答案 0 :(得分:1)
您可以通过astype
将布尔值掩码True
转换为1
,将False
转换为0
:
df1['REC30PY'] = (df1.velocity<=30).astype(int)
True
与False
s:
df1['REC30PY'] = df1.velocity<=30
答案 1 :(得分:0)
您正在测试整个系列的真值作为一个对象。您可以使用np.where
来测试每个元素。在你的情况下:
df1.loc[:, 'REC30PY'] = np.where(df1.velocity<=30, 1, 0)
或者,为了得到布尔人:
df1.loc[:, 'REC30PY'] = np.where(df1.velocity<=30, True, False)