[英]How to fill NaN in a column based on the values in another column?
我正在處理這個項目,我需要從reason
列中填寫一個NaN
單元格,但我需要先與status
列進行交叉檢查並填寫適當的值。
條件是:
STATUS
為“Invoiced”且REASON
為NaN
,則填寫“Not Applicable”STATUS
是“Lost Sale”並且REASON
是NaN
,則填寫“Unknown”我試過這段代碼:
data2 = np.where((data["SO_STATUS"] == "Invoiced")&(data["SO_LOSREASON"]=='NaN'),'null',"Not Applicable")
data2 = pd.DataFrame(data2, columns = ['SO_STATUS'])
data= data.join(data2)
但是,它說:
ValueError: columns overlap but no suffix specified: Index(['SO_STATUS'], dtype='object')
我不確定我所做的是否正確,因為我仍然需要reason
列中不是NaN
的其他數據。 非常感謝您的幫助!
嘗試使用直接列分配:
data['SO_STATUS'] = np.where((data["SO_STATUS"] == "Invoiced") & data["SO_LOSREASON"].isna(),, "Not Applicable", "Unknown")
您可以使用map
和where
,因此很容易添加任何其他條件:
data['new_column'] = (data['SO_STATUS'].map({'Invoiced': 'Not Applicable',
'Lost Sale': 'Unknown',
# add other here: 'Other': 'other',
})
.where(data['SO_LOSREASON'].isna())
)
示例(為清楚起見設置新列new_column
):
SO_STATUS SO_LOSREASON new_column
0 Invoiced NaN Not Applicable
1 Lost Sale NaN Unknown
2 Other NaN NaN
3 Invoiced abc NaN
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.