合并2列优先级

时间:2017-10-18 09:51:06

标签: python pandas merge

我有一个带有2列A和B的pandas df。我需要的是一个新的合并列'结果',其中A比B更受欢迎。我真的认为这很容易但仍然没有解。你们会怎么做?谢谢你的帮助。

A   B   result
go  for go
go      go
go      go
    for for
    for for

1 个答案:

答案 0 :(得分:2)

使用combine_firstfillna

df['result'] = df['A'].combine_first(df['B'])
print (df)
     A    B result
0   go  for     go
1   go  NaN     go
2   go  NaN     go
3  NaN  for    for
4  NaN  for    for

或者:

df['result'] = df['A'].fillna(df['B'])
print (df)
     A    B result
0   go  for     go
1   go  NaN     go
2   go  NaN     go
3  NaN  for    for
4  NaN  for    for

编辑:

要将空格替换为NaN,请使用:

df = df.replace('', np.nan)

或者:

df = df.mask(df == '')