2017-10-18 82 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