3

我想根据 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)

问题是DataDataFrame就是为什么我得到以下错误:

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 包吗?如果是这样,怎么做?

4

1 回答 1

11

而不是使用这个加入另一个选项如下

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

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

这可能会有所帮助。

于 2018-01-30T04:52:20.023 回答