Skip to main content
 首页 » 编程设计

python之Pyspark levenshtein 连接错误

2025年05月04日27softidea

我想根据 Levenshtein 距离执行连接。

我有 2 个表:

  1. Data:HDFS 文件存储库中的 CSV 文件。其中一列是 Disease description,15K 行。
  2. df7_ct_map:我从 Hive 调用的表。其中一列是 Disease Indication,20K 行。

我试图通过将每个描述与指示相匹配来连接两个表(它们是疾病的文本描述)。理想情况下,它们需要相同,但如果两个文本不同,我希望选择包含最大数量常用词的匹配文本。

from pyspark.sql.functions import levenshtein   
joinedDF = df7_ct_map.join( Data, levenshtein(df7_ct_map("description"),  
Data("Indication")) < 3) 
joinedDF.show(10) 

问题是 Data 是一个 DataFrame 这就是我收到以下错误的原因:

TypeError: 'DataFrame' object is not callable 
TypeError                                 Traceback (most recent call last) 
in engine 
----> 1 joinedDF = df7_ct_map.join( Data, levenshtein(df7_ct_map("description"), Data("Indication")) < 3) 
 
TypeError: 'DataFrame' object is not callable 

一些建议?我可以使用 Fuzzywuzzy 包吗?如果是,怎么办?

请您参考如下方法:

除了使用此连接之外,另一个选项如下所示

newDF=df1.join(df2,levenshtein(df1['description'], df2['description']) < 3) 

这将允许在连接 2 个数据帧时最多有 2 个字符的差异。

这可能有帮助。