Python 如何使用Pandas构建三输入或门
我的数据帧df有3个输入(A、B、C),如下所示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
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,它也适用于弦吗