【发布时间】:2021-07-02 16:36:18
【问题描述】:
用python中的模糊逻辑将列中的每一行与同一列中的每一行进行比较,如果匹配率> 90,则删除该行。我尝试使用重复项删除,但有些行具有相同的内容和一些额外的信息。数据如下
print(df)
输出是:
Page no
0 Hello
2 Hey
3 Helloo
4 Heyy
5 Hellooo
我正在尝试将每一行与每一行进行比较,并使用模糊逻辑删除如果行与比率大于 90 的内容匹配。预期的输出是:
Page no
0 Hello
2 Hey
我试过的代码是:
def func(name):
matches = df.apply(lambda row: (fuzz.ratio(row['Content'], name) >= 90), axis=1)
print(matches)
return [i for i, x in enumerate(matches) if x]
func("Hey")
上面的代码只检查一行有句Hey
谁能帮我写代码?真的很有帮助
【问题讨论】:
-
您使用什么库进行“模糊”匹配/同义词。你的例子只是开始,那是你想要的吗?需要定义你的算法...
-
我已经更新了我尝试过的代码,但这仅适用于一行,我们必须输入句子。你能调查一下问题吗
标签: python pandas dataframe fuzzy-logic fuzzy-comparison