尝试基于条件语句对二进制变量进行编码

时间:2017-08-11 13:28:07

标签: python pandas if-statement conditional

根据以下代码编写二进制变量的问题。如果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

2 个答案:

答案 0 :(得分:1)

您可以通过astype将布尔值掩码True转换为1,将False转换为0

df1['REC30PY'] = (df1.velocity<=30).astype(int)

TrueFalse 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)