Python Pandas两个表格内容模糊匹配的实现

 更新时间:2021年11月11日 17:16:56   作者:迪迦瓦特曼  
模糊查询大家应该都不会陌生,下面这篇文章主要给大家介绍了关于Python Pandas两个表格内容模糊匹配的实现方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

一、方法2

此方法是两个表构建某一相同字段,然后全连接,在做匹配结果筛选,此方法针对数据量不大的时候,逻辑比较简单,但是内存消耗较大

1. 导入库

import pandas as pd
import numpy as np
import re

2. 构建关键词

#关键词数据
df_keyword = pd.DataFrame({
    "keyid" : np.arange(5),
    "keyword" : ["numpy", "pandas", "matplotlib", "sklearn", "tensorflow"]
})
df_keyword

3. 构建句子

df_sentence = pd.DataFrame({
    "senid" : np.arange(10,17),
    "sentence" : [
        "怎样用pandas实现merge?",
        "Python之Numpy详细教程",
        "怎么使用Pandas批量拆分与合并Excel文件?",
        "怎样使用pandas的map和apply函数?",
        "深度学习之tensorflow简介",
        "tensorflow和numpy的关系",
        "基于sklearn的一些机器学习的代码"
    ]
})
df_sentence

 

4. 建立统一索引

df_keyword['match'] = 1
df_sentence['match'] = 1

5. 表连接

df_merge = pd.merge(df_keyword, df_sentence)
df_merge

6. 关键词匹配

def match_func(row):
    return re.search(row["keyword"], row["sentence"], re.IGNORECASE) is not None
df_merge[df_merge.apply(match_func, axis = 1)]

匹配结果如下 

二、方法2

此方法对编程能力有要求,在大数据集上计算量较方法一小很多

1. 构建字典

key_word_dict = {
    row.keyword : row.keyid
    for row in df_keyword.itertuples()
}
key_word_dict
{'numpy': 0, 'pandas': 1, 'matplotlib': 2, 'sklearn': 3, 'tensorflow': 4}

2. 关键词匹配

def merge_func(row):
    #新增一列,表示可以匹配的keyid
    row["keyids"] = [
        keyid
        for key_word, keyid in key_word_dict.items()
        if re.search(key_word, row["sentence"], re.IGNORECASE)
    ]
    return row
df_merge = df_sentence.apply(merge_func, axis = 1)

3. 结果展示

df_merge

4. 匹配结果展开

df_result = pd.merge(
left = df_merge.explode("keyids"),
right = df_keyword,
left_on = "keyids",
right_on = "keyid")
df_result

总结

到此这篇关于Python Pandas两个表格内容模糊匹配搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Django 全局的static和templates的使用详解

    Django 全局的static和templates的使用详解

    这篇文章主要介绍了Django 全局的static和templates的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • python实现本地批量ping多个IP的方法示例

    python实现本地批量ping多个IP的方法示例

    这篇文章主要介绍了python实现本地批量ping多个IP的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • python中对list去重的多种方法

    python中对list去重的多种方法

    这篇文章主要介绍了python中对list去重的多种方法,本文去重的前提是要保证顺序不变,本文给出了多种实现方法,需要的朋友可以参考下
    2014-09-09
  • 使用Pandas实现MySQL窗口函数的解决方法

    使用Pandas实现MySQL窗口函数的解决方法

    本文主要介绍 MySQL 中的窗口函数row_number()、lead()/lag()、rank()/dense_rank()、first_value()、count()、sum()如何使用pandas实现,同时二者又有什么区别,感兴趣的朋友一起看看吧
    2023-02-02
  • 一份python入门应该看的学习资料

    一份python入门应该看的学习资料

    关于python入门你应该看这些资料,帮助你快速入门python,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • python导入时小括号大作用

    python导入时小括号大作用

    这篇文章主要介绍了python导入时小括号的大作用,非常的简单实用,希望这个小技巧能够帮到大家
    2017-01-01
  • 用Python写脚本,实现完全备份和增量备份的示例

    用Python写脚本,实现完全备份和增量备份的示例

    下面小编就为大家分享一篇用Python写脚本,实现完全备份和增量备份的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python利用datetime模块计算时间差

    python利用datetime模块计算时间差

    python中通过datetime模块可以很方便的计算两个时间的差,datetime的时间差单位可以是天、小时、秒,甚至是微秒,下面我们就来详细看下datetime的强大功能吧
    2015-08-08
  • 浅谈python累加求和+奇偶数求和_break_continue

    浅谈python累加求和+奇偶数求和_break_continue

    这篇文章主要介绍了浅谈python累加求和+奇偶数求和_break_continue,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python字符和字符值(ASCII或Unicode码值)转换方法

    Python字符和字符值(ASCII或Unicode码值)转换方法

    这篇文章主要介绍了Python字符和字符值(ASCII或Unicode码值)转换方法,即把字符串在ASCII值或者Unicode值之间相与转换的方法,需要的朋友可以参考下
    2015-05-05

最新评论