我有一列值:
品牌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)
在代码的第一次初始化之后,我得到了以下结果:
BrandedBrand1truebrand2truenantruebrand3true品牌
在相同代码的第二次初始化之后,我得到了期望的结果:
品牌1真品牌2真品牌3真
面对/避免这个问题的更聪明的方法是什么?
1条答案
按热度按时间z9smfwbn1#
这个答案只关注为什么第一次迭代不起作用
在代码中替换
data.brand
与regex
,替换为np.nan
哪一个不是nan
,因此第一个init无法识别下一行中的条件:np.where(data['brand']!= 'nan', True, False)
. 但是,在第二次初始化时,该行已经是np.nan
你知道吗.astype(str)
在第一行np.nan
至'nan'
因此第三条线起作用了。解决方案:
替换:
使用:
这将把replace值设置为
'nan'
从getgo开始,第三行将在第一次迭代中正常运行。