6、pandas的分列之不規(guī)則字符串及str.extract()

在上一篇文章中,我們總結(jié)了分列的一種方式:當(dāng)所有行在需要的分列的地方都是相同的字母、符號(hào)、空格等等的時(shí)候,我們可以使用str.split()直接將所有行分成兩列。

然而在實(shí)際工作中,有可能有并不是所有的行都有用于分列的鍵。今天再總結(jié)兩種:

數(shù)據(jù)源

上面這組數(shù)據(jù)中的Latitude是我們需要分列的列。每個(gè)數(shù)據(jù)中都有前綴ab,這是我們不需要的。我們要做的是從第三位開始將訂單號(hào)切下來,就像對(duì)字符串進(jìn)行的切片操作一樣。

用str函數(shù)進(jìn)行切片

很簡(jiǎn)單吧,先使用.str將‘Latitude'這一列轉(zhuǎn)換為類似字符串?dāng)?shù)據(jù)類型,然后再用[ ]切片器就行了。跟字符串一樣,切片器可以切前面、后面、中間任一位置。

切片1
切片2

切好的數(shù)據(jù)可以通過簡(jiǎn)單賦值放到原數(shù)據(jù)里面:

切片后的數(shù)據(jù)加入源數(shù)據(jù)里

這樣的方法只能對(duì)整齊的數(shù)值進(jìn)行切片,圖中的Latitude里的數(shù)字與字母的數(shù)量不一樣,這樣進(jìn)行切片的話就會(huì)出錯(cuò)。

像這種數(shù)字和字母混合的字符串在處理的時(shí)候會(huì)比較麻煩,加入我們只需要數(shù)字或者字母要怎么處理呢?

這時(shí)候就要用到str.extract()函數(shù)和正則表達(dá)式了。

提取數(shù)據(jù):

只匹配數(shù)字

提取字母:

只匹配字母

由于提取的字母占用了兩行,因此要進(jìn)行拼接:

只提取字母并進(jìn)行拼接

注意書寫格式:要提取的部分正則表達(dá)式要用引號(hào)引起來。抽取多個(gè)數(shù)字或者字母的話要在后面加上'+'。

將提取的數(shù)據(jù)加入到數(shù)據(jù)源

加入之后的數(shù)據(jù)并不是數(shù)值格式的(屬于字符串格式的),因此不能跟正常的數(shù)值一樣進(jìn)行運(yùn)算,需要計(jì)算的時(shí)候要進(jìn)行格式的轉(zhuǎn)換。

提取的數(shù)據(jù)不是數(shù)值類型
轉(zhuǎn)換為浮點(diǎn)型
使用map和lambda匿名函數(shù)轉(zhuǎn)換格式
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容