Python Pandas兩個(gè)表格內(nèi)容模糊匹配的實(shí)現(xiàn)
一、方法2
此方法是兩個(gè)表構(gòu)建某一相同字段,然后全連接,在做匹配結(jié)果篩選,此方法針對(duì)數(shù)據(jù)量不大的時(shí)候,邏輯比較簡(jiǎn)單,但是內(nèi)存消耗較大
1. 導(dǎo)入庫(kù)
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簡(jiǎn)介",
"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
此方法對(duì)編程能力有要求,在大數(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é)果展開(kāi)
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)文章
Django 全局的static和templates的使用詳解
這篇文章主要介紹了Django 全局的static和templates的使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
python實(shí)現(xiàn)本地批量ping多個(gè)IP的方法示例
這篇文章主要介紹了python實(shí)現(xiàn)本地批量ping多個(gè)IP的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
使用Pandas實(shí)現(xiàn)MySQL窗口函數(shù)的解決方法
本文主要介紹 MySQL 中的窗口函數(shù)row_number()、lead()/lag()、rank()/dense_rank()、first_value()、count()、sum()如何使用pandas實(shí)現(xiàn),同時(shí)二者又有什么區(qū)別,感興趣的朋友一起看看吧2023-02-02
一份python入門(mén)應(yīng)該看的學(xué)習(xí)資料
關(guān)于python入門(mén)你應(yīng)該看這些資料,幫助你快速入門(mén)python,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
python導(dǎo)入時(shí)小括號(hào)大作用
這篇文章主要介紹了python導(dǎo)入時(shí)小括號(hào)的大作用,非常的簡(jiǎn)單實(shí)用,希望這個(gè)小技巧能夠幫到大家2017-01-01
用Python寫(xiě)腳本,實(shí)現(xiàn)完全備份和增量備份的示例
下面小編就為大家分享一篇用Python寫(xiě)腳本,實(shí)現(xiàn)完全備份和增量備份的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
python利用datetime模塊計(jì)算時(shí)間差
python中通過(guò)datetime模塊可以很方便的計(jì)算兩個(gè)時(shí)間的差,datetime的時(shí)間差單位可以是天、小時(shí)、秒,甚至是微秒,下面我們就來(lái)詳細(xì)看下datetime的強(qiáng)大功能吧2015-08-08
淺談python累加求和+奇偶數(shù)求和_break_continue
這篇文章主要介紹了淺談python累加求和+奇偶數(shù)求和_break_continue,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
Python字符和字符值(ASCII或Unicode碼值)轉(zhuǎn)換方法
這篇文章主要介紹了Python字符和字符值(ASCII或Unicode碼值)轉(zhuǎn)換方法,即把字符串在ASCII值或者Unicode值之間相與轉(zhuǎn)換的方法,需要的朋友可以參考下2015-05-05

