Python Pandas两个表格内容模糊匹配的实现
作者:迪迦瓦特曼 时间:2021-09-06 01:56:23
一、方法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
标签:pandas,模糊匹配,表格
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
python实现凯撒密码
2022-10-13 07:31:44
Python文件打开读取写入方法实用案例
2023-08-23 21:19:51
![](https://img.aspxhome.com/file/2023/2/61982_0s.png)
Python中属性和描述符的正确使用
2021-08-14 04:26:45
Pandas 多进程处理数据提高速度
2021-12-11 17:30:51
![](https://img.aspxhome.com/file/2023/0/105760_0s.png)
PID原理与python的简单实现和调参
2021-08-13 13:27:36
![](https://img.aspxhome.com/file/2023/5/85115_0s.png)
php中替换字符串函数strtr()和str_repalce()的用法与区别
2023-11-17 06:12:53
python flask开发的简单基金查询工具
2023-10-29 21:35:42
![](https://img.aspxhome.com/file/2023/0/66800_0s.png)
python进阶之自定义可迭代的类
2022-09-20 10:18:48
Python使用20行代码实现微信聊天机器人
2023-12-04 12:52:06
![](https://img.aspxhome.com/file/2023/8/124638_0s.jpg)
python实现合并两个数组的方法
2022-05-30 21:40:11
MySQL修改数据库大小
2011-01-13 20:00:00
Python 解析简单的XML数据
2021-03-19 11:58:58
用js实现放大镜效果
2023-09-19 18:29:29
![](https://img.aspxhome.com/file/2023/0/56200_0s.jpg)
Python脚本导出为exe程序的方法
2022-08-22 21:33:05
![](https://img.aspxhome.com/file/2023/3/121453_0s.png)
梅尔倒谱系数(MFCC)实现
2022-08-08 18:28:08
Python实现获取汉字偏旁部首的方法示例【测试可用】
2022-10-26 16:42:16
![](https://img.aspxhome.com/file/2023/5/76775_0s.png)
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
2023-11-01 00:14:33
Jsp+Servlet实现文件上传下载 删除上传文件(三)
2023-06-27 16:29:29
![](https://img.aspxhome.com/file/2023/0/96050_0s.png)
利用Python开发实现简单的记事本
2023-07-02 13:27:27
![](https://img.aspxhome.com/file/2023/4/59654_0s.png)
Python ckeditor富文本编辑器代码实例解析
2023-08-23 13:03:44