我有一个数据框:
id | 价值 |
---|---|
0 | 自动 |
1 | 手册 |
2 | 自动 |
3 | 手册 |
4 | 手册 |
我想根据第二列中存在的值添加另一列:
id | 价值 | 旗帜 |
---|---|---|
0 | 自动 | 是 |
1 | 手册 | |
2 | 自动 | 是 |
3 | 手册 | |
4 | 手册 |
我尝试了以下代码:
mask = df['Purchase Order Num'].str.contains('Auto', na= False, case=False)
df['Flag'] = np.where(df[mask], 'Yes', '')
我得到的错误是:
<块引用>值 (2) 的长度与索引 (5) 的长度不匹配
出了什么问题?
答案 0 :(得分:2)
当我们执行 np.where
时,我们需要将整个布尔值传递给它
mask = df['Purchase Order Num'].str.contains('Auto', na= False, case=False)
df['Flag'] = np.where(mask, 'Yes', '')
pandas 可以做
df['Flag'] = ''
df.loc[mask, 'Flag'] = 'Yes'