[英]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.