Python 如何仅为列IsB在表中不为空的记录设置IsA?

Python 如何仅为列IsB在表中不为空的记录设置IsA?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个熊猫数据框。如何仅为数据中具有IsB(非null)的记录设置列IsAIsA应为null data['IsA'] = (data['IsB'] == True) & (data['IsC'] == False) & (data['IsD'] == False) & (data['IsE'] == False) | ID | IsA | IsB | IsC | IsD | IsE | |----|--------|--------|-----|-----

我有一个熊猫数据框。如何仅为
数据中具有
IsB
(非
null
)的记录设置列
IsA
<对于
IsB
null
的记录,code>IsA
应为
null

data['IsA'] = (data['IsB'] == True) & (data['IsC'] == False) & (data['IsD'] == False) & (data['IsE'] == False)

| ID | IsA    | IsB    | IsC | IsD | IsE |
|----|--------|--------|-----|-----|-----|
| 1  | 0      | 1      | 0   | 1   | 0   |
| 2  | 1      | 1      | 0   | 0   | 0   |
| 3  | <null> | <null> | 0   | 0   | 0   |
data['IsA']=(data['IsB']==True)和(data['IsC']==False)和(data['IsD']==False)和(data['IsE']==False)
|ID | IsA | IsB | IsC | IsD | IsE|
|----|--------|--------|-----|-----|-----|
| 1  | 0      | 1      | 0   | 1   | 0   |
| 2  | 1      | 1      | 0   | 0   | 0   |
| 3  |  |  | 0   | 0   | 0   |
我认为需要检查
NaN
s,缺少设置为
NaN
的值:

感谢@coldspeed的创意:

data['IsA'] = data[['IsC', 'IsD', 'IsE']].notnull().all(1) & data['IsB'].isnull()
编辑:


为什么不这样缩短表达<代码>数据['IsC'、'IsD'、'IsE']].notnull().all(1)和数据['IsB'].isnull()@coldspeed-当
IsB
nan
时,您的答案仍将
IsA
设置为
False
:S@dunkubok我只是按照问题和答案中的蓝图来做的。好吧,让我试着更清楚地解释一下<当
IsB
True
IsC
时,
IsD
isE
False
时,code>IsA应变为
True
。在某些情况下,
IsB
nan
。对于这种情况,我想将IsA设置为nan。@dunkubok-所以需要
data['new']=data['IsC',IsD',IsE']].eq(False)。全部(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