作者:小伍哥
來源:AI入門學習
python內置一系列強大的字符串處理方法,但這些方法只能處理單個字符串,處理一個序列的字符串時,需要用到循環。
那麼,有沒有辦法,不用循環就能同時處理多個字符串呢,pandas的向量化操作就提供了這樣的方法。
向量化的操作使我們不必擔心數組的長度和維度,只需要關係操作功能,尤為強大的是,除了支持常用的字符串操作方法,還集成了正則表達式的大部分功能,這使得pandas在處理字符串列時,具有非常大的魔力。
例如,要計算每個單詞中『a』的個數,下面一行代碼就可以搞定,非常高效。
假如用內置的字符串函數進行操作,需要進行遍歷,且Python原生的遍歷操作無法處理缺失值。
#用循環進行處理
#存在缺失值時,列印報錯
Pandas的向量化操作,能夠正確處理缺失值,無報錯信息,如下:
通過上面的例子,對向量化進行簡單總結,向量化是一種同時操作整個數組而不是一次操作一個元素的方法,下面從看看具體怎麼應用。
向量化的字符方法
Pandas的字符串屬的方法幾乎包括了大部分Python的內置字符串方法(內置共有45個方法),下面將列舉一些常見的方法的用法,例如上面的count()方法將會返回某個字符的個數,而len方法將會返回整個字符的長度。
下面選取部分函數舉例,其他函數參考字符串模塊:Python字符串的45個方法詳解
len()
lower()
zfill()
右對齊,前面用0填充到指定字符串長度。
向量化的正則表達式
Pandas的字符串方法根據Python標準庫的re模塊實現了正則表達式,下面將介紹Pandas的str屬性內置的正則表達式相關方法。
split()
split,按指定字符分割字符串,類似split的方法返回一個列表類型的序列
#按數字分割
切分後的列表中的元素可以通過get方法或者 [] 方法進行讀取
使用expand方法可以輕易地將這種返回展開為一個數據表。
同樣,我們也可以限制切分的次數:
rsplit()
rsplit與split相似,不同的是,這個切分的方向是反的。即,從字串的尾端向首段切分。
replace ()
replace方法默認使用正則表達式
findall()
提取聊天記錄中的QQ號
其他向量化的方法
除了上面介紹的Pandas字符串的正常操作和正則表達式外,Pandas的str屬性還提供了其他的一些方法,這些方法非常的有用,在進行特徵提取或者數據清洗時,非常高效,具體如下:
wrap()
pad()
slice()
get()
slice_replace()
切片替換
get_dummies()
另一個需要好好解釋的是get_dummies()方法,舉個例子:假如我們用A,B,C,D來表示一個人的某個特徵:
repeat()
cat()
作用:連接字符串
用法:Series.str.cat(others=None, sep=None, na_rep=None)
參數:
others : 列表或複合列表,默認為None,如果為None則連接本身的元素 sep : 字符串 或者None,默認為None na_rep : 字符串或者 None, 默認 None。如果為None缺失值將被忽略。 返回值: concat : 序列(Series)/索引(Index)/字符串(str)