luk*_*e_t 2 python numpy python-2.7 pandas
我想使用np.where,但需要使用通配符来匹配字符串。这是可能的,还是有其他函数最适合在这种情况下使用?
df['PRODUCT'] = np.where(df['TYPE'] == '2b', 'Pencil',
np.where(df['TYPE'] like 'I5%', 'Ruler', 0))
Run Code Online (Sandbox Code Playgroud)
我尝试使用in运算符,但这不起作用。
df['PRODUCT'] = np.where(df['TYPE'] == '2b', 'Pencil',
np.where('I5' in df['TYPE'], 'Ruler', 0))
Run Code Online (Sandbox Code Playgroud)
你需要contains:
df['PRODUCT'] = np.where(df['TYPE'] == '2b', 'Pencil',
np.where(df['TYPE'].str.contains('I5'), 'Ruler', 0))
Run Code Online (Sandbox Code Playgroud)
样本:
df = pd.DataFrame({'TYPE':['2b','2c','I5','I5 a', 'a I5']})
print (df)
TYPE
0 2b
1 2c
2 I5
3 I5 a
4 a I5
df['PRODUCT'] = np.where(df['TYPE'] == '2b', 'Pencil',
np.where(df['TYPE'].str.contains('I5'), 'Ruler', 0))
print (df)
TYPE PRODUCT
0 2b Pencil
1 2c 0
2 I5 Ruler
3 I5 a Ruler
4 a I5 Ruler
Run Code Online (Sandbox Code Playgroud)
如果需要仅检查字符串的开头添加^:
df['PRODUCT'] = np.where(df['TYPE'] == '2b', 'Pencil',
np.where(df['TYPE'].str.contains('^I5'), 'Ruler', 0))
print (df)
TYPE PRODUCT
0 2b Pencil
1 2c 0
2 I5 Ruler
3 I5 a Ruler
4 a I5 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7525 次 |
| 最近记录: |