Я думаю, нужно isna
и notna
для проверки NaN
с, пропущенные значения с numpy.where
для набора NaN
:
Спасибо @coldspeed за идею:
data['IsA'] = data[['IsC', 'IsD', 'IsE']].notnull().all(1) & data['IsB'].isnull()
РЕДАКТИРОВАТЬ:
print (data)
ID IsA IsB IsC IsD IsE
0 1 0.0 1.0 0 1 0
1 2 1.0 NaN 0 0 0
2 3 NaN NaN 0 0 0
3 4 1.0 NaN 1 0 1
mask = (data['IsB'] == True) & (data['IsC'] == False) &
(data['IsD'] == False) & (data['IsE'] == False)
#simplify
#mask = (data['IsB'] == True) & data[['IsC', 'IsD', 'IsE']].eq(False).all(1)
data['IsA'] = np.where(data['IsB'].isna(),np.nan, mask)
print (data)
ID IsA IsB IsC IsD IsE
0 1 0.0 1.0 0 1 0
1 2 1.0 1.0 0 0 0
2 3 NaN NaN 0 0 0
3 4 NaN NaN 1 0 1