在python中创建一个结合其他虚拟变量的虚拟变量

时间:2016-04-25 16:31:40

标签: python python-2.7

我想将三个虚拟变量合并为一个。例如:

x1:1 0 0 0 1

x2:0 0 0 0 1

x3:1 1 0 0 0

我想创建: x4:1 1 0 0 1(如果三个假人中的任何一个有1则取1,如果全部为0则取0)

注意:它们是数据框中的变量。因此,新变量也将成为该数据框架的一部分。

我是python的新手,感谢你的帮助。最好

2 个答案:

答案 0 :(得分:0)

假设您将x定义为网格:

x = [
    [1, 0, 0, 0, 1],
    [0, 0, 0, 0, 1],
    [1, 1, 0, 0, 0]
]

对于每一行,我们可以使用any()来查看该行中的任何项目是否为1。然后我们可以将结果(布尔值)转换为int()的整数:

result = [int(any(row)) for row in x]

答案 1 :(得分:0)

我不太清楚新变量是数据框的一部分是什么意思。

我认为创建x4的最直接的方法是在列表解析中使用按位OR运算符:

>>> x1=[1, 0, 0, 0, 1]
>>> x2=[0, 0, 0, 0, 1]
>>> x3=[1, 1, 0, 0, 0]
>>> x4=[x1[i]|x2[i]|x3[i] for i in range(len(x1))]
>>> x4
[1, 1, 0, 0, 1]

列表推导(参见https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions)在迭代x1-x3的第一个,第二个等值时构建一个新列表。如果3个值中的任何一个为1,则每次按位OR运算符(|)(参见https://wiki.python.org/moin/BitwiseOperators)计算结果为1,否则为0。