Python Pandas兩個(gè)表格內(nèi)容模糊匹配的實(shí)現(xiàn)
一、方法2
此方法是兩個(gè)表構(gòu)建某一相同字段,然后全連接,在做匹配結(jié)果篩選,此方法針對數(shù)據(jù)量不大的時(shí)候,邏輯比較簡單,但是內(nèi)存消耗較大
1. 導(dǎo)入庫
import pandas as pd import numpy as np import re
2. 構(gòu)建關(guān)鍵詞
#關(guān)鍵詞數(shù)據(jù) df_keyword = pd.DataFrame({ "keyid" : np.arange(5), "keyword" : ["numpy", "pandas", "matplotlib", "sklearn", "tensorflow"] }) df_keyword
3. 構(gòu)建句子
df_sentence = pd.DataFrame({ "senid" : np.arange(10,17), "sentence" : [ "怎樣用pandas實(shí)現(xiàn)merge?", "Python之Numpy詳細(xì)教程", "怎么使用Pandas批量拆分與合并Excel文件?", "怎樣使用pandas的map和apply函數(shù)?", "深度學(xué)習(xí)之tensorflow簡介", "tensorflow和numpy的關(guān)系", "基于sklearn的一些機(jī)器學(xué)習(xí)的代碼" ] }) df_sentence
4. 建立統(tǒng)一索引
df_keyword['match'] = 1 df_sentence['match'] = 1
5. 表連接
df_merge = pd.merge(df_keyword, df_sentence) df_merge
6. 關(guān)鍵詞匹配
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)]
匹配結(jié)果如下
二、方法2
此方法對編程能力有要求,在大數(shù)據(jù)集上計(jì)算量較方法一小很多
1. 構(gòu)建字典
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. 關(guān)鍵詞匹配
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. 結(jié)果展示
df_merge
4. 匹配結(jié)果展開
df_result = pd.merge( left = df_merge.explode("keyids"), right = df_keyword, left_on = "keyids", right_on = "keyid") df_result
總結(jié)
到此這篇關(guān)于Python Pandas兩個(gè)表格內(nèi)容模糊匹配搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Python的Django框架中的Cookie相關(guān)處理
這篇文章主要介紹了詳解Python的Django框架中的Cookie相關(guān)處理,Cookie存儲是每個(gè)開發(fā)框架都會著重注意的重要功能,需要的朋友可以參考下2015-07-07Python線程之同步機(jī)制實(shí)際應(yīng)用場景舉例說明
這篇文章主要給大家分享的是Python線程之同步機(jī)制實(shí)際應(yīng)用場景舉例說明,銀行轉(zhuǎn)賬小栗子供大家參考學(xué)習(xí),希望對你有一定的幫助2022-02-02python如何給內(nèi)存和cpu使用量設(shè)置限制
這篇文章主要介紹了python如何給內(nèi)存和cpu使用量設(shè)置限制,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05Tensorflow 實(shí)現(xiàn)分批量讀取數(shù)據(jù)
今天小編就為大家分享一篇Tensorflow 實(shí)現(xiàn)分批量讀取數(shù)據(jù),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01使用Python制作一個(gè)極簡四則運(yùn)算解釋器
這篇文章主要介紹了使用Python制作一個(gè)極簡四則運(yùn)算解釋器,在使用工具之前,至少也要了解工具的作用,需要的朋友可以參考下2023-04-04