[英]Creating new column based on other column values with condition
我有一列包含值:
牌 |
---|
品牌1 |
品牌2 |
品牌3 |
data.brand = data.brand.astype(str)
data.brand = data.brand.replace(r'^\s*$', np.nan, regex=True)
data['branded'] = np.where(data['brand']!= 'nan', True, False)
在第一次初始化代碼后,我得到結果:
牌 | 品牌 |
---|---|
品牌1 | 真的 |
品牌2 | 真的 |
楠 | 真的 |
品牌3 | 真的 |
在第二次初始化相同的代碼后,我得到了想要的結果:
牌 | 品牌 |
---|---|
品牌1 | 真的 |
品牌2 | 真的 |
楠 | 錯誤的 |
品牌3 | 真的 |
面對/避免這個問題的更聰明的方法是什么?
這個答案只關注為什么第一次迭代不起作用
在您的代碼中,當您將data.brand
替換為regex
時,您將替換為不是nan
的np.nan
,因此第一個 init 無法識別下一行中的條件: np.where(data['brand'],= 'nan', True, False)
。 但是,在第二次初始化時,該行已經是np.nan
並且您在第一行中執行.astype(str)
將np.nan
設置為'nan'
,因此第三行有效。
解決方案:
代替:
data.brand = data.brand.replace(r'^\s*$', np.nan, regex=True)
和:
data.brand = data.brand.replace(r'^\s*$', 'nan', regex=True)
這會將 get go 中的替換值設置為'nan'
,因此第三行將在第一次迭代中運行良好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.