我尝试使用 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)
1 回答
慕婉清6462132
TA贡献1804条经验 获得超2个赞
你可以用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
添加回答
举报
0/150
提交
取消