我试图根据来自三列的值在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)
答案 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)