为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

浮云间 2021-10-19 16:57:50
我尝试使用 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


查看完整回答
反对 回复 2021-10-19
  • 1 回答
  • 0 关注
  • 269 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信