我有一个数据框,这是其中的一部分。
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)]' ...
...
我尝试做的是提取列Codes
中与模式r"\[<code in CodeID column>[^][]*\]"
匹配的字符串部分
比如:
df['Code'] = df['Codes'].str.find(r"\[<code in CodeID column>[^][]*\]")
This recent question似乎暗示这不可能以矢量化的方式实现,但情况并不完全相同。
2条答案
按热度按时间lztngnrs1#
我们当然可以使用一列中的字符串来比较另一列,如下所示:
在lambda表达式中,x[0]是codeID,x[1]是codes。
它返回None,因为我的正则表达式技能不好:)
abithluo2#
您可以使用pandas Series的extract方法和正则表达式,根据列CodeID中的相应值从列Codes中提取所需的字符串。下面是实现此功能的代码:
输出: