更新时间:2022-02-12 00:03:53
通过编写矢量化操作和避免循环来显着提高速度
Major speed improvements come by writing vectorized operations and avoiding loops
from fuzzywuzzy import fuzz
import pandas as pd
import numpy as np
dataframecolumn = pd.DataFrame(["apple","tb"])
dataframecolumn.columns = ['Match']
compare = pd.DataFrame(["adfad","apple","asple","tab"])
compare.columns = ['compare']
dataframecolumn['Key'] = 1
compare['Key'] = 1
combined_dataframe = dataframecolumn.merge(compare,on="Key",how="left")
combined_dataframe = combined_dataframe[~(combined_dataframe.Match==combined_dataframe.compare)]
def partial_match(x,y):
return(fuzz.ratio(x,y))
partial_match_vector = np.vectorize(partial_match)
combined_dataframe['score']=partial_match_vector(combined_dataframe['Match'],combined_dataframe['compare'])
combined_dataframe = combined_dataframe[combined_dataframe.score>=80]
+--------+-----+--------+------+
| Match | Key | compare | score
+--------+-----+--------+------+
| apple | 1 | asple | 80
| tb | 1 | tab | 80
+--------+-----+--------+------+