Python 根据列是否存在,使用条件逻辑创建新列

Python 根据列是否存在,使用条件逻辑创建新列,python,pandas,apply,boolean-logic,reindex,Python,Pandas,Apply,Boolean Logic,Reindex,我有这样一个数据帧: df A B C D E 1 0 1 0 1 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 1 1 1

我有这样一个数据帧:

       df 
          
            A   B   C   D   E
            1   0   1   0   1
            1   1   1   1   0
            0   1   1   1   1
            0   0   1   1   1
            1   1   0   1   1
            1   0   1   1   1
            1   1   0   0   1
            1   0   1   0   0
            1   1   0   0   0
            1   0   0   0   0
所以我想从这些列中创建一个输出(如1),如果A和B都是1,或者如果任何C/D/E都是1,否则输出为零。但是,这不是问题,因为我使用了:

         df['Out'] = (df.A & df.B) | df.C | df.D |df.E
因此,结果是:

       df 


        A   B   C   D   E   Out
        1   0   1   0   1   1
        1   1   1   1   0   1
        0   1   1   1   1   1
        0   0   1   1   1   1
        1   1   0   1   1   1
        1   0   1   1   1   1
        1   1   0   0   1   1
        1   0   1   0   0   1
        1   1   0   0   0   1
        1   0   0   0   0   0
然而,问题是这个逻辑是好的,但是由于我从DB中提取数据,所以很多时候数据可能会丢失任何列(a、B、C、D或E)。逻辑是一样的

因此,如果存在A或B中的任何一个(假设1缺失-例如A),则:

如果A和B都缺失,则:

        df['Out'] = dfB.C | df.D |df.E
       df['Out'] = (df.B)| df.D |df.E
如果说(A&C缺失),则:

如果(A、C、D)缺失,则:

如果说(C,D,E缺失),那么

等等:


因此,我面临的问题是,如何以pythonic的方式编写此代码,而不是使用多个if语句等?任何帮助我都将不胜感激。谢谢

一个想法是添加测试前缺少的所有列:

df = df.reindex(['A','B','C','D','E'], axis=1, fill_value=0)

df['Out'] = (df.A & df.B) | df.C | df.D | df.E
      df['Out'] = (df.B) |df.E
       df['Out'] = (df.A & df.B) 
df = df.reindex(['A','B','C','D','E'], axis=1, fill_value=0)

df['Out'] = (df.A & df.B) | df.C | df.D | df.E