我想将三个虚拟变量合并为一个。例如:
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的新手,感谢你的帮助。最好
答案 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。