使用多个列中的值创建单个列

时间:2019-01-23 07:44:10

标签: python python-3.x pandas python-2.7 jupyter-notebook

我试图根据来自三列的值在Pandas数据框中创建一个新列,如果每列['A','B','C']的值大于5,则输出= 1如果列['A','B','C']中的任何一个小于5的值,则输出= 0 数据框如下所示:

A   B   C
5   8   6
9   2   1
6   0   0
2   2   6
0   1   2
5   8   10  
5   5   1
9   5   6

预期输出:

A   B   C    new_column
5   8   6    1
9   2   1    0
6   0   0    0   
2   2   6    0
0   1   2    0
5   8   10   1
5   5   1    0
9   5   6    1

我尝试使用此代码,但未提供所需的输出:

conditions = [(df['A'] >= 5) , (df['B'] >= 5) , (df['C'] >= 5)]
choices = [1,1,1]
df['new_colum'] = np.select(conditions, choices, default=0)

1 个答案:

答案 0 :(得分:0)

您需要&的{​​{1}}连锁条件:

bitwise AND

或使用DataFrame.all检查行中是否所有值都是conditions = (df['A'] >= 5) & (df['B'] >= 5) & (df['C'] >= 5)

True

然后将conditions = (df[['A','B','C']] >= 5 ).all(axis=1) #if need all columns >=5 conditions = (df >= 5 ).all(axis=1) True, False的掩码转换为整数:

1, 0

或使用numpy.where

df['new_colum'] = conditions.astype(int)