Python 在dataframe中,根据其他两列中的结果生成第三列数据

Python 在dataframe中,根据其他两列中的结果生成第三列数据,python,pandas,dataframe,boolean,conditional-statements,Python,Pandas,Dataframe,Boolean,Conditional Statements,我是数据帧的新手。我有A、B和C列,希望使用A和B中的数据在C中创建一个值。例如,如果A=1和/或B=1,那么我想在C列中放置1,并对数据框中的所有行执行此逻辑 e、 g.起始阵列: A B C 0 1 0 1 0 1 2 1 1 3 0 0 A B C 0 1 0 1 1 0 1 1 2 1 1 1 3

我是数据帧的新手。我有
A
B
C
列,希望使用A和B中的数据在C中创建一个值。例如,如果
A=1
和/或
B=1
,那么我想在
C
列中放置
1
,并对数据框中的所有行执行此逻辑

e、 g.起始阵列:

         A  B  C
0        1  0  
1        0  1  
2        1  1  
3        0  0  
         A  B  C
0        1  0  1
1        0  1  1
2        1  1  1
3        0  0  0

结果数组:

         A  B  C
0        1  0  
1        0  1  
2        1  1  
3        0  0  
         A  B  C
0        1  0  1
1        0  1  1
2        1  1  1
3        0  0  0

etc

给定的起始DF为:

df = pd.DataFrame({'A': [1, 0, 1, 0], 'B': [0, 1, 1, 0]})
然后可以创建列
C
,如下所示:

df['C'] = (df == 1).any(axis=1).astype(int)
然后将
df
保留为:

   A  B  C
0  1  0  1
1  0  1  1
2  1  1  1
3  0  0  0
使用:

或者更简单地将布尔值
系列
转换为
int
,方法是:


您可以使用numpy
logical\u和
logical\u或

import numpy as np

df['C'] = np.logical_and(df['A'], df['B']).astype(int)

使用
列表压缩和
压缩的其他解决方案

df['C'] = [(1 if i or j == 1 else 0) for i,j in zip(df['A'], df['B'])]
它返回:

   A  B  C
0  1  0  1
1  0  1  1
2  1  1  1
3  0  0  0
如果
'A'
'B'
==
1使用
&
,请更改条件:

例如:

df['C'] = [(1 if i & j == 1 else 0) for i,j in zip(df['A'], df['B'])]
这将返回:

   A  B  C
0  1  0  0
1  0  1  0
2  1  1  1
3  0  0  0

df['C']=(df==1).any(axis=1).astype(int)
也许就足够了?@JohnGalt-yup-傻我-谢谢你。我已经更新了答案。
   A  B  C
0  1  0  0
1  0  1  0
2  1  1  1
3  0  0  0