猿问

有没有办法将 np.where() 与列列表一起使用?

我尝试使用 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)


浮云间
浏览 270回答 1
1回答

慕婉清6462132

你可以用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
随时随地看视频慕课网APP

相关分类

Python
我要回答