有一个数据帧,我需要创建一个新列Block与任一值1或2基于列的部分字符串匹配在它Program Number那里说_block_1或_block_2。我一直在尝试if语句,.str.contains但无法让它工作。
148 0209-3SP_block_1 ['g76p010060q00250r.0005' 'JEBD0507160 REV A' CHNCIII
149 0209-3SP_block_2 ['g76x.3761z-.500p03067q03067f.05' 'JEBD0507160 REV A' CHNC III
150 0209-5SP_block_1 ['g76p020060q00250r.0005' 'JEBD0507160 REV A' CHNC III
151 0209-5SP_block_2 ['g76x.3767z-.48p03067q03067f.05' 'JEBD0507160 REV A' CHNC III
152 0210-3SP_block_1 ['g76p010060q00250r.0005' 'JEBD0507160 REV A' CHNC III
您可以使用该方法where从numpy:
import numpy as np
df['Block'] = np.where(
df['Machine'].str.contains('_block_1'),1,
np.where(df['Machine'].str.contains('_block_2'),2,0)
)
否则,假设所有字符串具有相同的长度:
df['Block'] = df['Machine'].str[15:].astype(int)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。