2016-01-25 17 views
8

Sto provando ma non in grado di rimuovere nan mentre combina due colonne di un DataFrame.Come rimuovere il valore di nan mentre si combinano due colonne nel frame di Panda Data?

dati è come:

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

voglio:

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

Ecco il mio codice:

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

uscita sto ottenendo:

feedback_request_id 
568a8c25cac4991645c287acnan 
568df45b177e30c6487d3603nan 
nan568df434832b090048f34974 
nan568cd22e9e82dfc166d7dff1 
568df3f0832b090048f34711nan 
nan568e5a38b4a797c664143dda 

Ho provato questo, anche:

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

Ma è dando l'errore:

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

risposta

14

È possibile utilizzare combine_first o 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 
Problemi correlati