Python 将带有正则表达式字符串的列应用于其他列

Python 将带有正则表达式字符串的列应用于其他列,python,pandas,apply,Python,Pandas,Apply,我的dataframe有两列: col1 col2 "aaa bbb" some_regex_str1 "zzz aaa" some_regex_str2 "sda343das" some_regex_str3 ... "999 aaa dsd" some_regex_strN 数据帧的长度可以是10^6到10^7之间的任意值 目前, 我有: 它很慢 更有效的方法是什么 编辑: 我已经用创建了yo.py模块 import re def run

我的dataframe有两列:

col1           col2
"aaa bbb"      some_regex_str1
"zzz aaa"      some_regex_str2
"sda343das"    some_regex_str3
...
"999 aaa dsd"  some_regex_strN
数据帧的长度可以是10^6到10^7之间的任意值

目前,

我有:

它很慢

更有效的方法是什么

编辑:

我已经用创建了yo.py模块

import re


def run_regex(x):
    return re.search(x['col2'], x['col1'])
在主模块中,我执行以下操作:

from yo import run_regex

...

res = df.parallel_apply(run_regex)
但我还是会

AttributeError: Can't pickle local object 'prepare_worker.<locals>.closure.<locals>.wrapper'

AttributeError:无法pickle本地对象“prepare\u worker..closure..wrapper”

您可以手动或通过并行化应用。另一个选择是使用更高效的正则表达式库,比如or

如果您的正则表达式字符串是简单字符串(即,您的问题是在字符串中搜索子字符串),则可以使用。如果您在col2中有很多重复的值,这将是最好的解决方案

编辑:我添加了pandarallel示例:

重新导入
作为pd进口熊猫
从pandarallel导入pandarallel
pandarallel.initialize()
def f(x):
返回重新搜索(x['a'],x['b']).group()
df=pd.DataFrame([
{'a':'11','b':'11'}
] * 100)
df.平行应用(f,轴=1)

能否与预期输出共享示例数据框?我已经创建了示例数据框。问题是关于这些正则表达式在这些字符串上的应用。我不想更改正则表达式本身,也不想更改应用它的原因。我想知道这些正则表达式最有效的应用方式。也许会有帮助。看看我用正则表达式尝试了pandarallel,但它抱怨了。我将尝试共享错误。AttributeError:无法pickle本地对象“prepare\u worker..closure..wrapper”ty。请看我的编辑评论。我还是会出错的。我在答案中加了一个例子。
AttributeError: Can't pickle local object 'prepare_worker.<locals>.closure.<locals>.wrapper'