2016-01-25 6 views
8

Ich versuche, aber nicht in der Lage nan zu entfernen, während zwei Spalten eines DataFrame kombiniert.Wie nan-Wert zu entfernen, während zwei Spalten in Panda Data Frame kombiniert werden?

Daten ist wie:

feedback_id     _id 
568a8c25cac4991645c287ac  nan  
568df45b177e30c6487d3603  nan  
nan       568df434832b090048f34974  
nan       568cd22e9e82dfc166d7dff1 
568df3f0832b090048f34711  nan 
nan       568e5a38b4a797c664143dda 

Ich möchte:

feedback_request_id 
568a8c25cac4991645c287ac 
568df45b177e30c6487d3603 
568df434832b090048f34974 
568cd22e9e82dfc166d7dff1 
568df3f0832b090048f34711 
568e5a38b4a797c664143dda 

Hier ist mein Code:

df3['feedback_request_id'] = ('' if df3['_id'].empty else df3['_id'].map(str)) + ('' if df3['feedback_id'].empty else df3['feedback_id'].map(str)) 

Output Ich erhalte:

feedback_request_id 
568a8c25cac4991645c287acnan 
568df45b177e30c6487d3603nan 
nan568df434832b090048f34974 
nan568cd22e9e82dfc166d7dff1 
568df3f0832b090048f34711nan 
nan568e5a38b4a797c664143dda 

Ich habe dies versucht, auch:

df3['feedback_request_id'] = ('' if df3['_id']=='nan' else df3['_id'].map(str)) + ('' if df3['feedback_id']=='nan' else df3['feedback_id'].map(str)) 

Aber es gibt den Fehler:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 

Antwort

14

können Sie verwenden combine_first oder fillna:

print df['feedback_id'].combine_first(df['_id']) 
0 568a8c25cac4991645c287ac 
1 568df45b177e30c6487d3603 
2 568df434832b090048f34974 
3 568cd22e9e82dfc166d7dff1 
4 568df3f0832b090048f34711 
5 568e5a38b4a797c664143dda 
Name: feedback_id, dtype: object 

print df['feedback_id'].fillna(df['_id']) 
0 568a8c25cac4991645c287ac 
1 568df45b177e30c6487d3603 
2 568df434832b090048f34974 
3 568cd22e9e82dfc166d7dff1 
4 568df3f0832b090048f34711 
5 568e5a38b4a797c664143dda 
Name: feedback_id, dtype: object 
Verwandte Themen