Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.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 应用双lambda函数的性能问题_Python_Pandas_Performance_Loops_Lambda - Fatal编程技术网

Python 应用双lambda函数的性能问题

Python 应用双lambda函数的性能问题,python,pandas,performance,loops,lambda,Python,Pandas,Performance,Loops,Lambda,我有两个数据帧:df1、df2,每个数据帧都包含一个带名称的列。我将df1中的每个名称与df2中的每个名称进行比较。 这必须是近似匹配。Iam使用模糊标记排序比率来获得比较分数 然而,这种方法非常慢,而且df2一直在增长,它已经需要半个多小时(4k x 2k行)。 有没有办法加快这个过程 我目前的执行情况: def match(df2,name): df2['score'] = df2['name'].map(lambda x: fuzz.token_sort_ratio(x, name

我有两个数据帧:df1、df2,每个数据帧都包含一个带名称的列。我将df1中的每个名称与df2中的每个名称进行比较。 这必须是近似匹配。Iam使用模糊标记排序比率来获得比较分数

然而,这种方法非常慢,而且df2一直在增长,它已经需要半个多小时(4k x 2k行)。 有没有办法加快这个过程

我目前的执行情况:

def match(df2,name):
    df2['score'] = df2['name'].map(lambda x: fuzz.token_sort_ratio(x, name))
        return df2.loc[(df2['score'].idxmax())

df1['result']=df1['name'].map(lambda x: match(df2,x))


你可以试试这个

从fuzzyfuzzy导入fuzz
def相似性(名称1、名称2):
返回fuzz.token\u sort\u比率(name1,name2)
df1['key']=1
df2['key']=1
merged=df1.merge(df2,on='key')
合并['name_score']=合并['name_x','name_y']]\
.apply(lambda行:相似性(行['name\u x'],行['name\u y']),轴=1)
或者

从fuzzyfuzzy导入fuzz
def相似性(名称1、名称2):
返回fuzz.token\u sort\u比率(name1,name2)
df1['key']=1
df2['key']=1
merged=df1.merge(df2,on='key')
分数=列表(地图(相似性,合并['name\u x'],合并['name\u y']))
合并['name_score']=分数