根据Pandas中其他列的值为新列分配值

Mar*_*ary 2 python pandas

以下是数据框的子集:

id  words  A   B   C   D  E  
1   new    1       1   
2   good   1  
3   star            1
4   never                  
5   final   
Run Code Online (Sandbox Code Playgroud)

我想将一个新变量(称为FF)定义为一个新列,并为其分配1,如果所有其他变量(列)的值都为"null".新数据框将如下所示:

id  words  A   B   C   D  E  FF
1   new    1       1   
2   good   1  
3   star            1
4   never                     1                
5   final                     1
Run Code Online (Sandbox Code Playgroud)

我怎么能用python和Pandas做到这一点?谢谢.

Jan*_*nes 6

您可以定义一个逐行应用于数据框的函数:

def fill_if_nan(row):
    if row[['A', 'B', 'C', 'D', 'E']].isnull().all():
        return 1

    return None

df['FF'] = df.apply(fill_if_nan, axis=1)
Run Code Online (Sandbox Code Playgroud)

或者更优雅的基于numpy的解决方案:

df['FF'] = np.where(df[['A', 'B', 'C', 'D', 'E']].isnull().all(1), 1, np.nan)
Run Code Online (Sandbox Code Playgroud)