wie kann man viele (Fuzzy-) Zeichenkettenvergleiche mit apply in Pandas parallelisieren?

Ich habe das folgende Problem

Ich habe einen DatenrahmenMeiste das Sätze enthält, wie zB

master
Out[8]: 
                  original
0  this is a nice sentence
1      this is another one
2    stackoverflow is nice

Für jede Zeile im Master schaue ich in einem anderen Dataframe nach slave für die beste Übereinstimmung mitfuzzywuzzy. Ich verwende fuzzywuzzy, da die übereinstimmenden Sätze zwischen den beiden Datenrahmen sich geringfügig unterscheiden können (zusätzliche Zeichen usw.).

Zum Beispiel, slave könnte sei

slave
Out[10]: 
   my_value                      name
0         2               hello world
1         1           congratulations
2         2  this is a nice sentence 
3         3       this is another one
4         1     stackoverflow is nice

Hier ist ein voll funktionsfähiges, wunderbares, kompaktes Arbeitsbeispiel:)

from fuzzywuzzy import fuzz
import pandas as pd
import numpy as np
import difflib


master= pd.DataFrame({'original':['this is a nice sentence',
'this is another one',
'stackoverflow is nice']})


slave= pd.DataFrame({'name':['hello world',
'congratulations',
'this is a nice sentence ',
'this is another one',
'stackoverflow is nice'],'my_value': [2,1,2,3,1]})

def fuzzy_score(str1, str2):
    return fuzz.token_set_ratio(str1, str2)

def helper(orig_string, slave_df):
    #use fuzzywuzzy to see how close original and name are
    slave_df['score'] = slave_df.name.apply(lambda x: fuzzy_score(x,orig_string))
    #return my_value corresponding to the highest score
    return slave_df.ix[slave_df.score.idxmax(),'my_value']

master['my_value'] = master.original.apply(lambda x: helper(x,slave))

Die 1-Millionen-Dollar-Frage lautet: Kann ich meinen oben genannten Apply-Code parallelisieren?

mmerhin jede Zeile inmaster wird mit allen Zeilen in @ verglichslave (Slave ist ein kleiner Datensatz und ich kann viele Kopien der Daten im RAM speichern.)

Ich verstehe nicht, warum ich nicht mehrere Vergleiche durchführen konnte (d. H. Mehrere Zeilen gleichzeitig verarbeiten).

Problem: Ich weiß nicht, wie das geht oder ob das überhaupt möglich ist.

Jede Hilfe sehr geschätzt!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage