2016-01-25 23 views
8

Tôi đang thử nhưng không thể xóa nan khi kết hợp hai cột của DataFrame.Làm thế nào để loại bỏ giá trị nan trong khi kết hợp hai cột trong khung dữ liệu Panda?

dữ liệu là như:

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

Tôi muốn:

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

Đây là mã của tôi:

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 tôi nhận được:

feedback_request_id 
568a8c25cac4991645c287acnan 
568df45b177e30c6487d3603nan 
nan568df434832b090048f34974 
nan568cd22e9e82dfc166d7dff1 
568df3f0832b090048f34711nan 
nan568e5a38b4a797c664143dda 

Tôi đã cố gắng này, cũng:

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

Nhưng nó đem lại cho các lỗi:

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

Trả lời

14

Bạn có thể sử dụng combine_first hoặc 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 
Các vấn đề liên quan