我尝试使用np.where()函数创建新变量。
myDF['newVar'] = np.where((myDF['var1']==1) |
(myDF['var2']==1) |
(myDF['var3']==1) ,
1, 0)
是否有一种方法可以用这样的列表替换var1,var2,var3(每列的条件相同== 1):
listVars=['var1', 'var2', 'var3']
myDF['newVar'] = np.where((myDF[listVars]==1),
1, 0)
答案 0 :(得分:1)
您可以将pandas.DataFrame.any()
与axis=1
一起使用:
listVars=['var1', 'var2', 'var3']
myDF['newVar'] = np.where((myDF[listVars]==1).any(axis=1), 1, 0)
例如:
myDF = pd.DataFrame({
"var1": [1, 1, 1, 0, 0],
"var2": [1, 0, 1, 0, 1],
"var3": [0, 0, 0, 0, 0]
})
listVars=['var1', 'var2', 'var3']
myDF['newVar'] = np.where((myDF[listVars]==1).any(1),1, 0)
print(myDF)
# var1 var2 var3 newVar
#0 1 1 0 1
#1 1 0 0 1
#2 1 1 0 1
#3 0 0 0 0
#4 0 1 0 1