99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線(xiàn)電話(huà):13121318867

登錄
首頁(yè)大數(shù)據(jù)時(shí)代對(duì)比python字符串函數(shù),學(xué)習(xí)pandas的str矢量化字符串函數(shù)
對(duì)比python字符串函數(shù),學(xué)習(xí)pandas的str矢量化字符串函數(shù)
2020-06-30
收藏

文章來(lái)源:數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)之美

作者:黃偉呢

1.概述

python字符串應(yīng)該是python里面最重要的數(shù)據(jù)類(lèi)型了,因此學(xué)會(huì)怎么處理各種各樣的字符串,顯得尤為重要。

我們不僅要學(xué)會(huì)怎么處理單個(gè)字符串,這個(gè)就需要學(xué)習(xí)“python字符串函數(shù)”,我們還要學(xué)會(huì)怎么處理二維表格中每一列每一格的字符串,這個(gè)就需要學(xué)習(xí)“pandas的str矢量化字符串函數(shù)”。

今天我們采用對(duì)比的方式,帶大家總結(jié)常用的字符串函數(shù),希望這篇文章能夠?qū)Υ蠹移鸬胶芎玫淖饔谩?

在開(kāi)始享用這篇文章之前,請(qǐng)培養(yǎng)好自己的耐心,本文確實(shí)干貨滿(mǎn)滿(mǎn),一定要看到最后你才知道收獲有多大,尤其是后面的str屬性,超有用。

2.常用的python字符串函數(shù)

字符串中,空白符也算是真實(shí)存在的一個(gè)字符。

1)python字符串函數(shù)大全

2)函數(shù)講解

① find()函數(shù)

功能 :檢測(cè)字符串是否包含指定字符。如果包含指定字符,則返回開(kāi)始的索引;否則,返回-1.

② index()函數(shù)

功能 :檢測(cè)字符串是否包含指定字符。如果包含指定字符,則返回開(kāi)始的索引;否則,提示ValueError錯(cuò)誤。

③ count()函數(shù)

功能 : 統(tǒng)計(jì)字符串中,某指定字符在指定索引范圍內(nèi),出現(xiàn)的次數(shù)。

索引范圍 :左閉右開(kāi)區(qū)間。

注意 :如果不指定索引范圍,表示在整個(gè)字符串中,搜索指定字符出現(xiàn)的次數(shù)。

④ replace()函數(shù)

語(yǔ)法 :st.replace(str1.str2.count)。

功能 :將字符串st中的str1替換為str2.

注意 : 如果不指定count,則表示整個(gè)替換;如果指定count=1.則表示只替換一次,count=2.則表示只替換兩次。

⑤ split()

語(yǔ)法 :st.split('分隔符', maxSplit)

功能 :將字符串按照指定分隔符,進(jìn)行分割。

注意 :如果split中什么都不寫(xiě),則默認(rèn)按照空格進(jìn)行分割;如果指定了分割符,則按照指定分隔符,進(jìn)行分割。

maxSplit作用:不好敘述,自己看下面的例子就明白。

⑥ startswith()函數(shù)

語(yǔ)法 :st.startswith(str1)

功能 :檢查字符串st是否以字符串str1開(kāi)頭,若是,則返回True;否則,返回False。

⑦ endswith()函數(shù)

語(yǔ)法 :st.endswith(str1)

功能 :檢查字符串st是否以字符串str1結(jié)尾,若是,則返回True;否則,返回False。

⑧ lower()

語(yǔ)法 :st.lower()

功能 :將字符串的所有字母轉(zhuǎn)換為小寫(xiě)。

⑨ upper()

語(yǔ)法 :st.upper()

功能 :將字符串的所有字母轉(zhuǎn)換為大寫(xiě)。

⑩ strip()

語(yǔ)法 :st.strip()

功能 :去掉字符串左右兩邊的空白字符。

注1:st.rstrip() : 去掉字符串右邊的空白字符。

注2:st.lstrip() : 去掉字符串左邊的空白字符。

? join()函數(shù)

語(yǔ)法 :st.join(str1)

功能 :在指定字符串str1中,每相鄰元素中間插入st字符串,形成新的字符串。

注意 :是在str1中間插入st,而不是在st中間插入str1.

? isalpha()

語(yǔ)法 :str.isalpha()

功能 :如果字符串str中只包含字母,則返回True;否則,返回False。

注意 :只有字符串中全部是字母,才會(huì)返回True,中間有空格都不行。

? isdigit()

語(yǔ)法 :str.isdigit()

功能 :如果字符串str中只包含數(shù)字,則返回True;否則,返回False。

3.常用的str矢量化字符串函數(shù)

str矢量化操作:指的是循環(huán)迭代數(shù)組里面的某個(gè)元素,來(lái)完成某個(gè)操作。

1)str矢量化字符串函數(shù)大全

2)構(gòu)造一個(gè)DataFrame,用于測(cè)試函數(shù)

import pandas as pd

df ={'姓名':[' 黃同學(xué)','黃至尊','黃老邪 ','陳大美','孫尚香'],

'英文名':['Huang tong_xue','huang zhi_zun','Huang Lao_xie','Chen Da_mei','sun shang_xiang'],

'性別':['男','women','men','女','男'],

'身份證':['463895200003128433','429475199912122345','420934199110102311','431085200005230122','420953199509082345'],

'身高':['mid:175_good','low:165_bad','low:159_bad','high:180_verygood','low:172_bad'],

'家庭住址':['湖北廣水','河南信陽(yáng)','廣西桂林','湖北孝感','廣東廣州'],

'電話(huà)號(hào)碼':['13434813546','19748672895','16728613064','14561586431','19384683910'],

'收入':['1.1萬(wàn)','8.5千','0.9萬(wàn)','6.5千','2.0萬(wàn)']}

df = pd.DataFrame(df)

df

結(jié)果如下:

3)函數(shù)講解

① cat函數(shù):用于字符串的拼接

df["姓名"].str.cat(df["家庭住址"],sep='-'*3)

結(jié)果如下:

② contains:判斷某個(gè)字符串是否包含給定字符

df["家庭住址"].str.contains("廣")

結(jié)果如下:

③ startswith/endswith:判斷某個(gè)字符串是否以...開(kāi)頭/結(jié)尾

# 第一個(gè)行的“ 黃偉”是以空格開(kāi)頭的

df["姓名"].str.startswith("黃")

df["英文名"].str.endswith("e")

結(jié)果如下:

④ count:計(jì)算給定字符在字符串中出現(xiàn)的次數(shù)

df["電話(huà)號(hào)碼"].str.count("3")

結(jié)果如下:

⑤ get:獲取指定位置的字符串

df["姓名"].str.get(-1)

df["身高"].str.split(":")

df["身高"].str.split(":").str.get(0)

結(jié)果如下:

⑥ len:計(jì)算字符串長(zhǎng)度

df["性別"].str.len()

結(jié)果如下:

⑦ upper/lower:英文大小寫(xiě)轉(zhuǎn)換

df["英文名"].str.upper()

df["英文名"].str.lower()

結(jié)果如下:

⑧ pad+side參數(shù)/center:在字符串的左邊、右邊或左右兩邊添加給定字符

df["家庭住址"].str.pad(10.fillchar="*")      # 相當(dāng)于ljust()

df["家庭住址"].str.pad(10.side="right",fillchar="*")    # 相當(dāng)于rjust()

df["家庭住址"].str.center(10.fillchar="*")

結(jié)果如下:

⑨ repeat:重復(fù)字符串幾次

df["性別"].str.repeat(3)

結(jié)果如下:

⑩ slice_replace:使用給定的字符串,替換指定的位置的字符

df["電話(huà)號(hào)碼"].str.slice_replace(4.8."*"*4)

結(jié)果如下:

? replace:將指定位置的字符,替換為給定的字符串

df["身高"].str.replace(":","-")

結(jié)果如下:

? replace:將指定位置的字符,替換為給定的字符串(接受正則表達(dá)式)

replace中傳入正則表達(dá)式,才叫好用;

先不要管下面這個(gè)案例有沒(méi)有用,你只需要知道,使用正則做數(shù)據(jù)清洗多好用;

df["收入"].str.replace("\d+\.\d+","正則")

結(jié)果如下:

? split方法+expand參數(shù):搭配join方法功能很強(qiáng)大

# 普通用法

df["身高"].str.split(":")

# split方法,搭配expand參數(shù)

df[["身高描述","final身高"]] = df["身高"].str.split(":",expand=True)

df

# split方法搭配join方法

df["身高"].str.split(":").str.join("?"*5)

結(jié)果如下:

? strip/rstrip/lstrip:去除空白符、換行符

df["姓名"].str.len()

df["姓名"] = df["姓名"].str.strip()

df["姓名"].str.len()

結(jié)果如下:

? findall:利用正則表達(dá)式,去字符串中匹配,返回查找結(jié)果的列表

findall使用正則表達(dá)式,做數(shù)據(jù)清洗,真的很香!

df["身高"]

df["身高"].str.findall("[a-zA-Z]+")

結(jié)果如下:

? extract/extractall:接受正則表達(dá)式,抽取匹配的字符串(一定要加上括號(hào))

df["身高"].str.extract("([a-zA-Z]+)")

# extractall提取得到復(fù)合索引

df["身高"].str.extractall("([a-zA-Z]+)")

# extract搭配expand參數(shù)

df["身高"].str.extract("([a-zA-Z]+).*?([a-zA-Z]+)",expand=True)

結(jié)果如下:

數(shù)據(jù)分析咨詢(xún)請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線(xiàn)
立即咨詢(xún)
客服在線(xiàn)
立即咨詢(xún)
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶(hù)后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }