2017-10-18 67 views
1

我有一个熊猫DF 2列A和B.我需要的是一个新的合并列“结果”,其中A优于B.我真的认为这将是容易的,但仍然没有解。你们会怎么做?谢谢你的帮助。合并2列优先

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

回答

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 == '') 
+0

jezrael感谢您的回复。我其实有空值,而不是楠表并在第一次无法重现您的解决方案,直到我明白,我必须一切为NaN空值转换为使combine_first工作。 – Vinh

+0

而我只是收集足够的分数,现在就可以投票答案,这就是soooo cooool! – Vinh

+0

你需要DF = df.replace( '',np.nan)或DF = df.mask( '')。我只用手机,所以未经测试。 – jezrael