替换依赖于熊猫中其他列和条件的列值



你好,我有一个数据帧,例如

COL1 COL2 COL3 COL4 COL5
G1   NaN  NaN  NaN  A
G1   NaN  Lop  NaN  A 
G2   NaN  NaN  NaN  B 
G3   Sil  NaN  SLO  A
G4   NaN  NaN  NaN  C
G4   LIJ  KYI  NaN  B

然后,如果COL2,COL3,COL4 == "NaN"& COL5list("A","B"),则用OK替换COL2

的想法我应该得到

COL1 COL2 COL3 COL4 COL5
G1   OK   NaN  NaN  A
G1   NaN  Lop  NaN  A 
G2   OK  NaN  NaN  B 
G3   Sil  NaN  SLO  A
G4   NaN  NaN  NaN  C
G4   LIJ  KYI  NaN  B

到目前为止,我尝试了:

tab['COL2'][(tab['COL2'].isna()) & (tab['COL3'].isna()) & (tab['COL4'].isna()) & tab['COL5'].str.contains("A|B"))] = "OK"

尝试使用all+isna

df.loc[df.COL5.isin(['A','B']) & df[['COL2','COL3','COL4']].isna().all(1),'COL2']='OK'
df
Out[22]: 
COL1 COL2 COL3 COL4 COL5
0   G1   OK  NaN  NaN    A
1   G1  NaN  Lop  NaN    A
2   G2   OK  NaN  NaN    B
3   G3  Sil  NaN  SLO    A
4   G4  NaN  NaN  NaN    C
5   G4  LIJ  KYI  NaN    B

也许很简单:

df.loc[df['COL2 COL3 COL4'.split()].isna().all(axis=1) & df['COL5'].isin({'A', 'B'}), 'COL2'] = 'OK'

相关内容

  • 没有找到相关文章

最新更新