Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用Pandas构建三输入或门_Python_Python 3.x_Pandas_Numpy_Logical Or - Fatal编程技术网

Python 如何使用Pandas构建三输入或门

Python 如何使用Pandas构建三输入或门,python,python-3.x,pandas,numpy,logical-or,Python,Python 3.x,Pandas,Numpy,Logical Or,我的数据帧df有3个输入(A、B、C),如下所示 A B C 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 我想建立逻辑或门,并有如下所示的样本输出 A B C Output 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0

我的数据帧df有3个输入(A、B、C),如下所示

A   B   C
0   0   0
0   0   1
0   1   0
0   1   1
1   0   0
1   0   1
1   1   0
1   1   1
我想建立逻辑或门,并有如下所示的样本输出

A   B   C   Output
0   0   0   0
0   0   1   1
0   1   0   1
0   1   1   1
1   0   0   1
1   0   1   1
1   1   0   1
1   1   1   1

如何在pandas中实现这一点

您只需评估
df.A | df.B | df.C

df['OR_Gate']=df.A | df.B | df.C
注意:如果A、B、C列中的值是0和1的字符串,则执行以下操作之一:

#方法1:
#将字符串转换为int,然后计算OR_门:
#这将更改A、B、C列中的值类型
df=df.astype('int')
df['OR_Gate']=df.A | df.B | df.C
#方法2:
#这不会更改A、B、C列中的原始数据类型
#但将正确评估“或门”。
df['OR_Gate']=df.A.astype(int)| df.B.astype(int)| df.C.astype(int)
#方法3:
#如果希望最终输出为布尔形式。
df['OR_Gate']=df.A.astype(bool)| df.B.astype(bool)| df.C.astype(bool)
详细解决方案
将熊猫作为pd导入
#虚拟数据
A=[0]*4+[1]*4
B=[0]*2+[1]*2+[0]*2+[1]*2
C=[0,1]*4
#生成数据帧
df=pd.DataFrame({'A':A,'B':B,'C':C})
#更新“或门”输出
df['OR_Gate']=df.A | df.B | df.C
df
输出

   A  B  C  OR_Gate
0  0  0  0        0
1  0  0  1        1
2  0  1  0        1
3  0  1  1        1
4  1  0  0        1
5  1  0  1        1
6  1  1  0        1
7  1  1  1        1
您可以要求值满足条件

df = pd.DataFrame([[0,0,0],[0,0,1], [0,1,0], [0,0,0]], columns=['A', 'B', 'C'])
df['Output'] = df.eq(False).all(1).astype(int)

df

Out[1]: 
   A  B  C  Output
0  0  0  0       0
1  0  0  1       1
2  0  1  0       1
3  0  0  0       0

看不到图片,你能把你的数据和代码放进去吗?@Rahulrajan,只有当你强制字符串为true和false时……让我们测试一下这个理论。这可能需要一些改变。但是你有什么样的绳子?那些是1和0的字符串吗?@CypherX,我有对还是错。我是否应该将True伪码为1,将False伪码为0来实现这一点。或者,如果你有
True
False
,那么就用
df.A.astype(bool)| df.B.astype(bool)| df.C.astype(bool)
。这将将0和1转换为false / true,并且将0和1的字符串和真/假字符串转换成布尔true / false,然后对OR门进行评估。@ Rululrja请考虑<代码>接受< /COD>和<代码> UpCuffy<代码>,如果适用的话。谢谢你。@Micheal Gardner,它也适用于弦吗