【发布时间】:2021-04-27 23:43:16
【问题描述】:
我有一列包含值:
| brand |
|---|
| Brand1 |
| Brand2 |
| Brand3 |
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)
在第一次初始化代码后,我得到了结果:
| brand | branded |
|---|---|
| Brand1 | TRUE |
| Brand2 | TRUE |
| nan | TRUE |
| Brand3 | TRUE |
在第二次初始化相同的代码后,我得到了想要的结果:
| brand | branded |
|---|---|
| Brand1 | TRUE |
| Brand2 | TRUE |
| nan | FALSE |
| Brand3 | TRUE |
面对/避免这个问题的更聪明的方法是什么?
【问题讨论】:
-
用
data.brand = data.brand.replace(r'^\s*$', 'nan', regex=True)替换这个data.brand = data.brand.replace(r'^\s*$', np.nan, regex=True)? -
您也可以避免使用
replace和np.where部分,因为您只是检查brand中的值是否存在完整的空白字符,这可以使用str,contains轻松实现。请查看data['branded'] = data['brand'].str.contains(r'^\s*$') -
谢谢! data.brand = data.brand.replace(r'^\s*$', 'nan', regex=True) 修复它!
-
data['brand'] = data['brand'].str.contains(r'^\s*$') 这与想要的结果相反
-
@A99 只需反转掩码检查
data['branded'] = ~data['brand'].str.contains(r'^\s*$')
标签: python pandas dataframe numpy