Pandas文本处理双雄extract+extractall
公眾號:尤而小屋
作者:Peter
編輯:Peter
今天給大家介紹兩個Pandas中處理文本數據的函數,主要功能是從文本內容中提取想要的信息:extract + extractall
建議:如果你有點正則匹配的基本知識,食用本文更香~
一、extract函數
1.1語法說明
extract函數的具體使用形式如下,只有3個參數:
Series.str.extract(pat,?flags=0,?expand=None)參數的具體解釋為:
pat:字符串或者正則表達式
flags:整型
expand:布爾值,是否返回DataFrame;T-是,F-否
1.2模擬數據
我們看看一個官網提供的簡單案例,下面是模擬的數據Series:
1.3匹配1
在下面的例子中,匹配了兩組模式的數據;一對()表示匹配一組:
[ab]:表示從ab字母中任意匹配一個
\d:表示匹配一個數字
通過結果,我們可以發現2點:
當匹配多組規則的時候,如果沒有匹配成功,則用NaN來代替
當第一組模式沒有匹配成功的時候,第二組匹配無效
關于第2點:在c3中雖然后面的\d匹配到了數字,但是前面的[ab]是沒有匹配成功的,c不滿足ab中的任意一個,所以最終整體還是NaN
1.4匹配2
下面的匹配和上面的區別在于多個了問號?,結果卻不同
在進行正則匹配的時候,問號?表示匹配前面元素的1個或者0個。所以在c3中,[ab]可以說是匹配到了0個,用NaN代替,也是匹配成功
1.5匹配3
在匹配的時候指定列名,生成最終的DataFrame:
列名的指定使用?P<column>
1.6參數expand使用
關于參數expand的使用:
expand = True:返回的是DataFrame
expand = False:返回的是Series或者Index
通過下面兩個例子的比較,我們就能夠觀察到expand的作用:
二、extractall函數
2.1語法說明
extract只返回第一個匹配到的字符;extractall將匹配所有返回的字符
Series.str.extractall(pat,?flags=0)參數的具體解釋為:
pat:字符串或者正則表達式
flags:整型
返回值一定是一個DataFrame數據框
2.2模擬數據
下面是模擬了一份新的數據:
下面通過3個例子來對比兩個函數的區別:
2.3對比1
單組模式下的匹配
2.4對比2
多組模式下的匹配:
2.5對比3
多組模式下的匹配,且加上列名:
三、實戰案例
下面通過一個實際的案例來講解如何使用extract函數:
3.1模擬數據
name字段中其實是同時包含了姓名和性別兩個信息,address字段中同時包含了省份和城市:
df?=?pd.DataFrame({"name":["Tom-male","Peter?male","Jimmy-female","Mike?male","John-female"],"address":["廣東省深圳市","廣東省廣州市","浙江省杭州市","江蘇省南京市","湖南省長沙市"]}) df3.2提取省份
快速提取地址address中的省份信息,其中.*?表示匹配任意內容
3.3提取省份+城市
同時提取省份+城市,還可以指定列名信息:
3.4提取名字+性別
從字段name中將姓名和性別同時提取出來,\w表示匹配一個字母,+表示匹配多個字符
四、正則匹配小知識
在這里簡單介紹一點關于正則匹配的小知識,下面內容來自谷歌分析:
4.1通配符
| ? | 匹配前面的字符 0 次或 1 次 | 10? 可以匹配 1、10 |
| + | 匹配前面的字符 1 次或多次 | 10+ 可以匹配 10、100 |
| * | 匹配前面的字符 0 次或多次 | 1* 可以匹配 1、10 |
| | | 創建 OR(或)匹配 ?請勿在表達式末尾使用 | 1|10 可以匹配 1、10 |
4.2定位符
| $ | 匹配位于字符串結尾的相鄰字符 | 10$ 可以匹配 110、1010 ?;無法匹配 100、10x |
4.3問號 (?)
問號 (?) 匹配前面的字符 0 次或 1 次。例如,10? 可以匹配:
1 ? ?:問號前面的0匹配了0次
10 ? :問號前面的0匹配了1次
4.4加號 (+)
加號 (+) 匹配前面的字符 1 次或多次。例如,10+ 可以匹配:
10 ?:0匹配一次
100 ?:0匹配兩次
1000 ? :0匹配三次
4.5星號 (*)
星號 (*) 匹配前面的字符 0 次或多次。例如,10* 可以匹配:
1 ?:前面的0匹配0次
10 ?:匹配1次
100
1000
總結
以上是生活随笔為你收集整理的Pandas文本处理双雄extract+extractall的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 群友福利 | 55 本《AI 嵌入式系统
- 下一篇: (视频+图文)机器学习入门系列-第12章