簡體   English   中英

基於具有條件的其他列值創建新列

[英]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時,您將替換為不是nannp.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM