Pandas 根据其他两列的条件值填充第三列

Pandas 根据其他两列的条件值填充第三列,pandas,dataframe,Pandas,Dataframe,熊猫中的简单数据帧: A B C 1 1 1 0 0 1 0 0 假设我想用1填充C列,如果a和B都是1,否则为0。 如果我尝试做以下事情: if df['A'] == 1 and df['B'] == 1: df['C'] = 1 else: df['C'] = 0 我得到的结果是: 级数的真值是模糊的。使用a.empty、a.bool()、a.item()、a.any()或a.all() 哪种代码最有效,应如

熊猫中的简单数据帧:

A  B  C  
1  1  
1  0  
0  1  
0  0  
假设我想用1填充C列,如果a和B都是1,否则为0。 如果我尝试做以下事情:

    if df['A'] == 1 and df['B'] == 1:
        df['C'] = 1
    else:
        df['C'] = 0
我得到的结果是:

级数的真值是模糊的。使用a.empty、a.bool()、a.item()、a.any()或a.all()

哪种代码最有效,应如何使用?

Multiply
all
不要这样做

df.assign(C=df[['A', 'B']].astype(bool).all(1).astype(int))

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

谢谢你的建议,@piRSquared。也许我没有充分地阐述这个问题。我想在两列上使用条件语句来生成第三列,如我给出的示例所示。您已经解决了“和”问题,但我还需要解决“或”问题,例如:`如果a==1或B==1,那么C=1`@kozowh各种逻辑组合的排列是无限的。在涵盖高水平的通用性的同时,试图回答这个问题需要付出很大的努力。你可以举一个例子,充分说明你真正想做的事情。谢谢你的评论。多亏了Stack Overflow成员,我成功地找到了这个问题的解决方案。这是一般的表格<代码>df['stx2']、df['stx1']、df['stx1']、df['EHEC']、[(1 if i和j==1 else 0)对于i、j在zip中(df['eae']、df['STEC'])]df['O157']=[(1 if(i或j==1)和k==1 else 0)对于i、j、k在zip中(df['rfb']、df'LF']、df['EHEC']、df[]!
df.assign(C=df[['A', 'B']].astype(bool).all(1).astype(int))

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