Python Pandas两个表格内容模糊匹配的实现
作者:迪迦瓦特曼 发布时间:2021-09-06 01:56:23
标签: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
来源:https://blog.csdn.net/weixin_43734080/article/details/121228769
0
投稿
猜你喜欢
- 实现思路:分为两部分,第一部分,获取网页上数据并使用xlwt生成excel(当然你也可以选择保存到数据库),第二部分获取网页数据使用IO流将
- 前言我们见到几乎所有的 Web 网站或者手机 App 也好,它们的最终目的都是要留住用户,提升自己网站的用户注册量,所以说用户的概念也必须深
- 今天在写BLOG的Trackback时,需要用到当前页的URL地址,并且包括?后的所有参数。在网上看到以下的这段ASP代码,它的
- 实现思路1、场地部署:我们需要拥有一个可以用来画节点的地方!详看我这篇文章QGraphicsScene、QGraphicsView的基础使用
- 一 .概述SQL Server 将某些系统事件和用户定义事件记录到 SQL Server 错误日志和 Microsoft Windows 应
- 1、什么是线性规划线性规划(Linear programming),在线性等式或不等式约束条件下求解线性目标函数的极值问题,常用于解决资源分
- 本文总结一下,拖拽所延伸出来的一些效果,供大家参考,具体内容如下1.实现拖拉图片时,带框的效果。即当鼠标拖动某一个图片或物体时,其原有位置扔
- 本文介绍了python技能之导出excel的实例代码,正好能用到,写出来分享给大家作为一个数据分析师,下面的需求是经常会遇到的。从数据库或者
- MYSQL官方提供了Installer方式安装MYSQL服务以及其他组件,使的Windows下安装,卸载,配置MYSQL变得特别简单。1.
- 问题描述??输入一个正整数n在n*n的方阵内填入1,2,3,4…n*n,要求填成蛇形。(回旋的向中间收敛)样例输入:4样例输出:不必严格按照
- 为了防止机器人频繁登陆网站或者破坏分子恶意登陆,很多用户登录和注册系统都提供了图形验证码功能。验证码(CAPTCHA)是“Completel
- (一)问题遗传算法求解正方形拼图游戏(二)代码#!/usr/bin/env python# -*- coding: utf-8 -*-fro
- 本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalS
- 本章的前面讨论如何使用SQL向一个表中插入数据。但是,如果你需要向一个表中添加许多条记录,使用SQL语句输入数据是很不方便的。幸运的是,My
- 本文实例为大家分享了vue更多筛选项小组件的实现方法,供大家参考,具体内容如下效果:就是一个简单的小效果,当有很多筛选条件时,默认只展示几项
- 一、名称空间和作用域1、命名空间(Namespace)命名空间是从名称到对象的映射,大部分的命名空间都是通过 Python 字典来实现的。命
- 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断。比如,输入用户的年龄,根据年龄打印不同的内容。。。Python程序中,能让计算机
- 本方法只做学习研究之用,不得用于商业用途若经济条件允许,请支持并购买正版,链接地址:https://www.jetbrains.com/py
- tkinter label超链接调用浏览器打开网址tkinter的label标签没有command属性,但是可以利用bind方法给label
- python中字典可以一键多值,也就是意味着一个键可以对应多个值。例:#encoding=utf-8print '中国'#字