Pandas文本處理高階函數(shù)extract + extractall

公眾號:尤而小屋
作者:Peter
編輯:Peter

大家好,我是Peter~

今天給大家介紹兩個Pandas中處理文本數(shù)據(jù)的函數(shù),主要功能是從文本內(nèi)容中提取想要的信息:extract + extractall

image

extract函數(shù)

語法說明

extract函數(shù)的具體使用形式如下嫁怀,只有3個參數(shù):

Series.str.extract(pat, flags=0, expand=None)

參數(shù)的具體解釋為:

  • pat:字符串或者正則表達(dá)式
  • flags:整型
  • expand:布爾值溉愁,是否返回DataFrame维蒙;T-是,F(xiàn)-否

模擬數(shù)據(jù)

我們看看一個官網(wǎng)提供的簡單案例剂邮,下面是模擬的數(shù)據(jù)Series:

image

匹配1

在下面的例子中,匹配了兩組模式的數(shù)據(jù)横侦;一對()表示匹配一組:

  • [ab]:表示從ab字母中任意匹配一個
  • \d:表示匹配一個數(shù)字
image

通過結(jié)果挥萌,我們可以發(fā)現(xiàn)2點(diǎn):

  1. 當(dāng)匹配多組規(guī)則的時候,如果沒有匹配成功枉侧,則用NaN來代替
  2. 當(dāng)?shù)谝唤M模式?jīng)]有匹配成功的時候,第二組匹配無效

關(guān)于第2點(diǎn):在c3中雖然后面的\d匹配到了數(shù)字,但是前面的[ab]是沒有匹配成功的纽门,c不滿足ab中的任意一個酝陈,所以最終整體還是NaN

匹配2

下面的匹配和上面的區(qū)別在于多個了問號?,結(jié)果卻不同

image

在進(jìn)行正則匹配的時候翼虫,問號?表示匹配前面元素的1個或者0個屑柔。所以在c3中,[ab]可以說是匹配到了0個珍剑,用NaN代替掸宛,也是匹配成功

匹配3

在匹配的時候指定列名,生成最終的DataFrame:

image

列名的指定使用?P<column>

參數(shù)expand使用

關(guān)于參數(shù)expand的使用:

  • expand = True:返回的是DataFrame
  • expand = False:返回的是Series或者Index

通過下面兩個例子的比較招拙,我們就能夠觀察到expand的作用:

image

extractall函數(shù)

語法說明

extract只返回第一個匹配到的字符唧瘾;extractall將匹配所有返回的字符

Series.str.extractall(pat, flags=0)

參數(shù)的具體解釋為:

  • pat:字符串或者正則表達(dá)式
  • flags:整型

返回值一定是一個DataFrame數(shù)據(jù)框

模擬數(shù)據(jù)

下面是模擬了一份新的數(shù)據(jù):

image

下面通過3個例子來對比兩個函數(shù)的區(qū)別:

對比1

單組模式下的匹配

image

對比2

多組模式下的匹配:

image

對比3

多組模式下的匹配,且加上列名:

image

實(shí)戰(zhàn)案例

下面通過一個實(shí)際的案例來講解如何使用extract函數(shù):

模擬數(shù)據(jù)

name字段中其實(shí)是同時包含了姓名和性別兩個信息别凤,address字段中同時包含了省份和城市:

df = pd.DataFrame({
    "name":["Tom-male","Peter male","Jimmy-female","Mike male","John-female"],
    "address":["廣東省深圳市","廣東省廣州市","浙江省杭州市","江蘇省南京市","湖南省長沙市"]}
    )
df
image

提取省份

快速提取地址address中的省份信息饰序,其中.*?表示匹配任意內(nèi)容

image

提取省份+城市

同時提取省份+城市,還可以指定列名信息:

image

提取名字+性別

從字段name中將姓名和性別同時提取出來闻妓,\w表示匹配一個字母菌羽,+表示匹配多個字符

image

正則匹配小知識

在這里簡單介紹一點(diǎn)關(guān)于正則匹配的小知識,下面內(nèi)容來自谷歌分析:

通配符

. 匹配任何單個字符(字母、數(shù)字或符號) 1. 可以匹配 10注祖、1A 1.1 可以匹配 111猾蒂、1A1
? 匹配前面的字符 0 次或 1 次 10? 可以匹配 1、10
+ 匹配前面的字符 1 次或多次 10+ 可以匹配 10是晨、100
* 匹配前面的字符 0 次或多次 1* 可以匹配 1肚菠、10
| 創(chuàng)建 OR(或)匹配 請勿在表達(dá)式末尾使用 1|10 可以匹配 1、10

定位符

^ 匹配位于字符串開頭的相鄰字符 ^10 可以匹配 10罩缴、100蚊逢、10x ;無法匹配 110箫章、110x
$ 匹配位于字符串結(jié)尾的相鄰字符 10$ 可以匹配 110烙荷、1010 ;無法匹配 100檬寂、10x

問號 (?)

問號 (?) 匹配前面的字符 0 次或 1 次终抽。例如,10? 可以匹配:

  • 1 : 問號前面的0匹配了0次
  • 10 : 問號前面的0匹配了1次

加號 (+)

加號 (+) 匹配前面的字符 1 次或多次桶至。例如昼伴,10+ 可以匹配:

  • 10 : 0匹配一次
  • 100 : 0匹配兩次
  • 1000 : 0匹配三次

星號 (*)

星號 (*) 匹配前面的字符 0 次或多次。例如镣屹,10* 可以匹配:

  • 1 :前面的0匹配0次
  • 10 : 匹配1次
  • 100
  • 1000

后面寫一篇詳細(xì)的基于Python中的re模塊的正則匹配文章圃郊,下期見~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市女蜈,隨后出現(xiàn)的幾起案子持舆,更是在濱河造成了極大的恐慌,老刑警劉巖鞭光,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吏廉,死亡現(xiàn)場離奇詭異,居然都是意外死亡惰许,警方通過查閱死者的電腦和手機(jī)席覆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來汹买,“玉大人佩伤,你說我怎么就攤上這事』薇校” “怎么了生巡?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長见妒。 經(jīng)常有香客問我孤荣,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任盐股,我火速辦了婚禮钱豁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘疯汁。我一直安慰自己牲尺,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布幌蚊。 她就那樣靜靜地躺著谤碳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪溢豆。 梳的紋絲不亂的頭發(fā)上蜒简,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機(jī)與錄音漩仙,去河邊找鬼臭蚁。 笑死,一個胖子當(dāng)著我的面吹牛讯赏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播冷尉,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼漱挎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了雀哨?” 一聲冷哼從身側(cè)響起磕谅,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎雾棺,沒想到半個月后膊夹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捌浩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年放刨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尸饺。...
    茶點(diǎn)故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡进统,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出浪听,到底是詐尸還是另有隱情螟碎,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布迹栓,位于F島的核電站掉分,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜酥郭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一华坦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧褥民,春花似錦季春、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至撵颊,卻和暖如春宇攻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背倡勇。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工逞刷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人妻熊。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓夸浅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親扔役。 傳聞我的和親對象是個殘疾皇子帆喇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容