python 如果另一个Dataframe行中存在的字符串的百分比>= 75%,则检索Dataframe值

tjjdgumg  于 2022-12-17  发布在  Python
关注(0)|答案(1)|浏览(120)

好吧,这是燃烧我的大脑,我决定问它在这里。
我有两个现有的Dataframe,第一个包含一个物理对象的小描述,另一个Dataframe通常包含同一对象的详细描述。
问题是,这种描述并不总是有相同的字数,所以它可能存在对同一对象的不同描述。
由于 Dataframe 没有任何其他列来匹配正确的信息,我的想法是通过第二个 Dataframe 中包含的单词的百分比来匹配这些描述。
Dataframe 1:
| 项目|
| - ------|
| 数字生活-计算机科学,计算机,信息系统,基础和数学|
| Livro didatico -土木工程,电气工程,机械工程,生产和系统工程,机械技术-汽车工业生产,信息系统技术,石油工程,渔业工程,卫生工程和软件工程。|
| 数字生活-学校达Saúde Enfermagem,菲西奥特拉比亚,教育斐济|
Dataframe 2(详细对象描述):
| 项目|
| - ------|
| 数字图书馆-教育学多样性(用于指导)国家图书馆包括计算机科学和土地科学,计算机,信息系统,基础和数学|
| 国家图书馆包括土木工程、电气工程、机械工程、生产和系统工程、机械技术-汽车工业生产、信息系统技术、石油工程、渔业工程、卫生工程和软件工程。|
| 数字图书馆-教育学多样性(用于指导)国家图书馆是一个教育学院,菲西奥特拉皮亚,教育学院|
我已经设法删除了任何特殊字符和字母重音,这样就可以更容易地搜索。
这是我用来计算两个不同字符串之间的百分比的方法,但是我想在这两个 Dataframe 之间做这个。它是否可能以一种Python的方式,或者我将不得不在每一行中迭代以匹配所需的字符串?

@staticmethod
def valida_descricao(string_contida: str, string_completa: str) -> int:
    porcentagem_str_contida = 100 / len(string_contida.split())
    soma_porcentagem = 0

    for token in string_contida.split(' '):
        if token in string_completa:
            soma_porcentagem += porcentagem_str_contida

    return soma_porcentagem
a8jjtwal

a8jjtwal1#

你在两个 Dataframe 中没有其他主键,你试图根据描述的相似性来匹配它们,如果是真的,那么是的,你需要为每一行运行,并制作一个n*n 2D矩阵(使用python列表,而不是空的 Dataframe ),然后用它来找到每个键的最佳匹配。
理想情况下,它应该为每个键生成一个最佳匹配,但我怀疑这种情况是否会发生,因此,您可以过滤掉冲突的行并进一步试验或手动分离。

相关问题