通过其他列填充NaN值

时间:2020-10-05 13:23:22

标签: python pandas

你好,我有一个df,例如

COL1 COL2 
SEQ1 SEQ1_67
SEQ2 NaN
SEQ3 SEQ3_7788
SEQ5 SEQQ0
SEQ6 NaN
SEQ7 NaN

,我想用COL2对应的内容填充NaN COL1的值 并得到

COL1 COL2 
SEQ1 SEQ1_67
SEQ2 SEQ2
SEQ3 SEQ3_7788
SEQ5 SEQQ0
SEQ6 SEQ6
SEQ7 SEQ7

2 个答案:

答案 0 :(得分:1)

使用:

df.COL2 = df.COL2.mask(df.COL1.eq(df.COL2))

或者:

df.loc[df.COL1.eq(df.COL2), 'COL2'] = np.nan

print (df)
   COL1       COL2
0  SEQ1    SEQ1_67
1  SEQ2        NaN
2  SEQ3  SEQ3_7788
3  SEQ5      SEQQ0
4  SEQ6        NaN
5  SEQ7        NaN

对于反向简化器,请使用Series.fillna

df.COL2 = df.COL2.fillna(df.COL1)

答案 1 :(得分:1)

您可以使用numpy.where

In [1334]: df.COL2 = np.where(df.COL2.isna(), df.COL1, df.COL2)

In [1335]: df
Out[1335]: 
   COL1       COL2
0  SEQ1    SEQ1_67
1  SEQ2       SEQ2
2  SEQ3  SEQ3_7788
3  SEQ5      SEQQ0
4  SEQ6       SEQ6
5  SEQ7       SEQ7