Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python从部分字符串匹配填充列_Python_String_Pandas - Fatal编程技术网

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部分。感谢这个链接,这实际上是我在最后一次尝试中使用的内容,测试匹配或包含模式的字符串的部分