Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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
使用pandas中的Regex根据另一列中的字符串查找匹配项_Regex_Pandas_Dataframe - Fatal编程技术网

使用pandas中的Regex根据另一列中的字符串查找匹配项

使用pandas中的Regex根据另一列中的字符串查找匹配项,regex,pandas,dataframe,Regex,Pandas,Dataframe,我有一个数据帧,这是其中的一部分 CodeID Codes 0 'code1' '[code1(a,b,c)][code2(c,d,e)][code3(e,f,g)]' ... 1 'code2' '[code1(a,b,c)][code2(c,d,e)][code3(e,f,g)]' ... 2 'code3' '[code1(a,b,c)][code2(c,d,e)][code3(e,f,g)]' ... ... 我试图做的是提取列code中与模式

我有一个数据帧,这是其中的一部分

   CodeID    Codes
0  'code1'   '[code1(a,b,c)][code2(c,d,e)][code3(e,f,g)]'   ...
1  'code2'   '[code1(a,b,c)][code2(c,d,e)][code3(e,f,g)]'   ...
2  'code3'   '[code1(a,b,c)][code2(c,d,e)][code3(e,f,g)]'   ...
...
我试图做的是提取列
code
中与模式
r“\[[^][*\]”匹配的字符串部分。

比如:

df['Code'] = df['Codes'].str.find(r"\[<code in CodeID column>[^][]*\]")
df['code']=df['code'].str.find(r“\[[^][]*\]”)

似乎暗示不可能以矢量化的方式实现,但情况并不完全相同。

我们当然可以使用一列中的字符串来比较另一列,如下所示

在lambda表达式中,x[0]是代码ID,x[1]是代码


因为我的正则表达式技能不好,所以它不会返回任何结果:)

如果可能的话,正则表达式将看起来像
r“\[[^][]*\]”谢谢。我总是对regex视而不见,把调试的那部分留到最后!
import re
import pandas as pd

Out[20]: 
    CodeID                                         Codes
0  'code1'  '[code1(a,b,c)][code2(c,d,e)][code3(e,f,g)]'
1  'code2'  '[code1(a,b,c)][code2(c,d,e)][code3(e,f,g)]'
2  'code3'  '[code1(a,b,c)][code2(c,d,e)][code3(e,f,g)]'

df[['CodeID','Codes']].apply(lambda x: re.match(r"\[%s[^][]*\]"%x[0], x[1]),axis=1)
Out[21]: 
0    None
1    None
2    None
dtype: object