使用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