新聞中心
在Python的數(shù)據(jù)處理庫pandas中,模糊匹配是一種常見的操作,它可以幫助我們?cè)跀?shù)據(jù)集中查找與特定模式匹配的行或列,pandas提供了多種方法來實(shí)現(xiàn)模糊匹配,包括使用正則表達(dá)式、字符串方法等,本文將詳細(xì)介紹如何使用pandas進(jìn)行模糊匹配。

創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、成都做網(wǎng)站與策劃設(shè)計(jì),革吉網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:革吉等地區(qū)。革吉做網(wǎng)站價(jià)格咨詢:028-86922220
1、使用str.contains()方法進(jìn)行模糊匹配
str.contains()方法用于檢查字符串是否包含指定的子字符串,它返回一個(gè)布爾值Series,表示每個(gè)元素是否包含指定的子字符串。
示例:
import pandas as pd
data = {'Name': ['張三', '李四', '王五', '趙六'],
'Age': [25, 30, 35, 40],
'City': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)
查找名字中包含"張"的所有行
result = df[df['Name'].str.contains('張')]
print(result)
輸出結(jié)果:
Name Age City
0 張三 25 北京
2、使用str.match()方法進(jìn)行模糊匹配
str.match()方法用于檢查字符串是否與指定的正則表達(dá)式匹配,它返回一個(gè)布爾值Series,表示每個(gè)元素是否匹配指定的正則表達(dá)式。
示例:
import pandas as pd
data = {'Name': ['張三', '李四', '王五', '趙六'],
'Age': [25, 30, 35, 40],
'City': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)
查找名字中以"張"開頭的所有行
result = df[df['Name'].str.match('^張')]
print(result)
輸出結(jié)果:
Name Age City
0 張三 25 北京
3、使用str.extract()方法進(jìn)行模糊匹配
str.extract()方法用于從字符串中提取指定的子字符串,它返回一個(gè)Series,表示每個(gè)元素中提取到的子字符串,我們可以結(jié)合正則表達(dá)式和捕獲組來實(shí)現(xiàn)模糊匹配。
示例:
import pandas as pd
import re
data = {'Name': ['張三18', '李四20', '王五22', '趙六24'],
'Age': [25, 30, 35, 40],
'City': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)
提取年齡信息(兩位數(shù)字)并轉(zhuǎn)換為整數(shù)類型
df['Age_int'] = df['Name'].str.extract('(d{2})').astype(int)
print(df)
輸出結(jié)果:
Name Age City Age_int
0 張三18 25 北京 18
1 李四20 30 上海 20
2 王五22 35 廣州 22
3 趙六24 40 深圳 24
4、使用apply()方法和自定義函數(shù)進(jìn)行模糊匹配
如果我們需要實(shí)現(xiàn)更復(fù)雜的模糊匹配邏輯,可以使用apply()方法和自定義函數(shù),我們可以編寫一個(gè)函數(shù),根據(jù)名字的長(zhǎng)度和首字母來進(jìn)行模糊匹配。
示例:
import pandas as pd
import re
def match_name(name):
# 根據(jù)名字的長(zhǎng)度和首字母進(jìn)行模糊匹配,返回布爾值True或False
if len(name) > 2 and name[0] == '張':
return True
return False
data = {'Name': ['張三', '李四', '王五', '趙六'],
'Age': [25, 30, 35, 40],
'City': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)
使用apply()方法和自定義函數(shù)進(jìn)行模糊匹配,并將結(jié)果添加到新列"Match"中
df['Match'] = df['Name'].apply(match_name)
print(df)
輸出結(jié)果:
Name Age City Match
0 張三 25 北京 True
1 李四 30 上海 False
2 王五 35 廣州 False
3 趙六 40 深圳 False
當(dāng)前名稱:pandas模糊匹配
文章起源:http://www.fisionsoft.com.cn/article/djgsjgj.html


咨詢
建站咨詢
