如何基于其他几个列的值创建一个二进制列?

时间:2019-08-21 10:19:10

标签: python pandas

我有一个包含7个inary列(True,False)的数据集。我想创建一个新的列二进制列,如果所有其他标记为1,则标记为1;如果其他任何标记为0,则标记为0。

我尝试过:

df["new_col"] = np.where(df[["col1", "col2", "col3", "col4", "col5", "col6", "col7"]]>0,1,0)

但是我得到这个错误:

Wrong number of items passed 7, placement implies 1

我知道这意味着什么,但是如果我不知道要使用哪个工具来完成此操作。

我该怎么做?

非常感谢您

1 个答案:

答案 0 :(得分:3)

使用DataFrame.all测试每行(轴= 1)的所有值是否均为True,然后将True/False映射为1/0映射为整数:

cols = ["col1", "col2", "col3", "col4", "col5", "col6", "col7"]
df["new_col"] = df[cols].all(axis=1).astype(int)

替代numpy.where

df["new_col"] = np.where(df[cols].all(axis=1), 1, 0)