2016-01-25 32 views
8

我在尝试但不能删除nan,同时组合了DataFrame的两列。如何在熊猫数据框中结合两列时删除nan值?

数据是这样的:

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

我想:

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

这里是我的代码:

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

输出我得到:

feedback_request_id 
568a8c25cac4991645c287acnan 
568df45b177e30c6487d3603nan 
nan568df434832b090048f34974 
nan568cd22e9e82dfc166d7dff1 
568df3f0832b090048f34711nan 
nan568e5a38b4a797c664143dda 

我已经试过这一点,也:

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

但它给人的错误:

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

回答

14

您可以使用combine_firstfillna

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 
相关问题