Python从部分字符串匹配填充列
我有一个如下所示的数据帧,我需要创建一个新的列Python从部分字符串匹配填充列,python,string,pandas,Python,String,Pandas,我有一个如下所示的数据帧,我需要创建一个新的列Block,根据列程序编号中的部分字符串匹配,其中的值为1或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
Block
,根据列程序编号
中的部分字符串匹配,其中的值为1
或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
您可以使用
numpy
中的where
方法:
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)
刚刚尝试了另一种方法:
block1=df['Machine'].str.contains('u block_1')df['block']=block1.replace((True,False),('1','2')
,但这将所有2
添加到了columnSee,特别是regex部分。感谢这个链接,这实际上是我在最后一次尝试中使用的内容,测试匹配或包含模式的字符串的部分