【问题标题】:Pyspark levenshtein Join errorPyspark levenshtein 加入错误
【发布时间】:2018-01-24 15:08:28
【问题描述】:

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

我有两张桌子:

  1. Data:这是 HDFS 文件存储库中的 CSV。其中一列是疾病description,15K 行。
  2. df7_ct_map:我从 Hive 调用的一张桌子。其中一列是疾病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 包吗?如果有,怎么做?

【问题讨论】:

  • 应该是df7_ct_map["description"] 而不是df7_ct_map("description")。另一个也一样:Data["Indication"] 不是Data("Indication")。我也会推荐stackoverflow.com/q/43938672/8371915
  • 谢谢!我会尝试从您的建议中复制一些最佳实践

标签: python pyspark apache-spark-sql levenshtein-distance fuzzywuzzy


【解决方案1】:

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

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

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

这可能会有所帮助。

【讨论】:

  • 有没有办法在结果数据帧中包含 levenshtein 距离值?
猜你喜欢
  • 2014-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-26
  • 1970-01-01
  • 2021-04-10
  • 1970-01-01
相关资源
最近更新 更多