我试图使用np.where根据其他三列中的条件创建一个新列。在下面的df中,我想创建一个新的“score”列,对于B、C、D列中的每一个小于等于5的数字,该列的值加1
df = pd.DataFrame({'A':[1,2,3], 'B':[5,7,9], 'C':[2,6,4], 'D':[6,7,8]})
df
A B C D
0 1 5 2 6
1 2 7 6 7
2 3 9 4 8
预期结果如下所示:
A B C D score
0 1 5 2 6 2
1 2 7 6 7 0
2 3 9 4 8 1
我可以分别为每列B、C、D写一个np.where条件,但不知道如何将它们累加起来;而且,真正的数据有数百列要查询,而不是只有3列,因此手工查询似乎很愚蠢,我相信有一种更好的方法我没有想到
将^{} 与列
cols
和sum
的列表一起用于计数True
:如果需要所有不带第一列的列:
如果需要不带
A
列的所有列:编辑:OP更改问题后。获取列表C中提到的所有列中少于5个元素的计数(在列表C中也可以提到更多元素,根据所示示例,现在它有
B,C,D
)df将如下所示:
使用布尔掩蔽,您可以尝试以下操作
样本df的输出如下所示:
相关问题 更多 >
编程相关推荐