如何根据另一个列的正或负值创建布尔列

时间:2019-07-11 13:48:25

标签: python python-3.x pandas dataframe boolean

我的数据框具有这样的列:

pattern='[^\d!"#$%*+-:;<=>?@^_`{}|~'[]\]+'

我需要做的是创建一个布尔值列,如果上一列的行中的值为正,则该值为1;如果值为负,则为0。

输出列如下:

184         1
190        -2
272       -14
382       -40
439        20
440        20
797       -45
1108        0
1122       -1
1415       -1
1419        0
1641       -1

以此类推...基本思想是考虑到该值是正数还是负数,该列将与另一列相对应。

我如何在熊猫中做到这一点?

预先感谢

2 个答案:

答案 0 :(得分:2)

你可以

df[, "new_col"] = np.where(df[,"old_col"]>0,1,0)

答案 1 :(得分:1)

df['mycolumn'] > 0

为您提供一组True / False值。您可以直接将其安全:

df['is_positive'] = df['mycolumn'] > 0

或者您使用numpy.where(boolean_list, true_value, false_value)在布尔列表中将True的值替换为true_value,将False的值替换为false_value

df['is_positive'] = np.where(df['mycolumn'] > 0, 1, 0)