NaN时如何使用一列覆盖另一列并采用另一列值?

时间:2019-03-23 03:07:42

标签: python pandas dataframe

我的系统是带有大熊猫0.24的Python3.6

我的数据框cola中有两列colbdf,如下所示:

cola   colb
A         C
C        NaN
NaN       C
C         D

如果两者都具有行值,我想用colb覆盖cola,如果cola没有值,则采用colb

预期结果如下:

cola   colb      colc
A         C       C
C        NaN      C
NaN       C       C
C         D       D

该怎么做?
预先感谢!

2 个答案:

答案 0 :(得分:2)

您可以使用np.where

df['colc']=np.where(df['colb'].isnull(), df['cola'], df['colb'])

print(df)

输出:

  cola  colb colc
0     A     C    C
1     C  None    C
2  None     C    C
3     C     D    D

答案 1 :(得分:1)

这更像是fillnapd.Series

df.colb.fillna(df.cola)
Out[593]: 
0    C
1    C
2    C
3    D
Name: colb, dtype: object
#df['colc']=df.colb.fillna(df.cola)