【发布时间】:2020-03-15 23:49:13
【问题描述】:
我有一个 Pandas 数据框如下:
data = pd.DataFrame({'w1':[0,1,0],'w2':[5,8,0],'w3':[0,0,0],'w4' :[5,1,0], 'w5' : [7,1,0],'condition' : [5,1,0]})
我需要有一列,对于每一行,计算它们的值等于“条件”的列数(“条件”以外的列)。 最终输出应如下所示:
我不想写一个 for 循环。
作为一种解决方案,我想用np.where 将等于“条件”的值替换为 1,将其他值替换为 0,然后将每行的 1 相加,这没有帮助:
data = pd.DataFrame(np.where(data.loc[:,data.columns != 'condition'] == data['condition'], 1, 0), columns = data.columns)
这只是一个想法(我的意思是用 1 和 0 替换值),但任何 Python 解决方案都值得赞赏。
【问题讨论】:
-
为什么使用 0/1 而不是实际的布尔值?