我有一个包含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
我知道这意味着什么,但是如果我不知道要使用哪个工具来完成此操作。
我该怎么做?
非常感谢您
答案 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)