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


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

然而在實際工作中,有可能有並不是所有的行都有用於分列的鍵。今天再總結兩種:

 
數據源

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

 
用str函數進行切片

很簡單吧,先使用.str將‘Latitude'這一列轉換為類似字符串數據類型,然后再用[ ]切片器就行了。跟字符串一樣,切片器可以切前面、后面、中間任一位置。

 
切片1
 
切片2

切好的數據可以通過簡單賦值放到原數據里面:

 
切片后的數據加入源數據里

這樣的方法只能對整齊的數值進行切片,圖中的Latitude里的數字與字母的數量不一樣,這樣進行切片的話就會出錯。

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

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

提取數據:

 
只匹配數字

提取字母:

 
只匹配字母

由於提取的字母占用了兩行,因此要進行拼接:

 
只提取字母並進行拼接

注意書寫格式:要提取的部分正則表達式要用引號引起來。抽取多個數字或者字母的話要在后面加上'+'。

 
將提取的數據加入到數據源

加入之后的數據並不是數值格式的(屬於字符串格式的),因此不能跟正常的數值一樣進行運算,需要計算的時候要進行格式的轉換。

 
提取的數據不是數值類型
 
轉換為浮點型
 
使用map和lambda匿名函數轉換格式


作者:探索數據之美
鏈接:https://www.jianshu.com/p/2e9b0a56405a
來源:簡書
著作權歸作者所有。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM