Pandas 字符串操作
1. 前言
上一節(jié)我們學(xué)習(xí)了 Pandas 對(duì)于數(shù)值數(shù)據(jù)排序和排名操作,除了數(shù)值數(shù)據(jù)之外,字符串?dāng)?shù)據(jù)也是我們數(shù)據(jù)處理和分析中最常見(jiàn)到的數(shù)據(jù)之一,而對(duì)于字符串的處理成為了我們數(shù)據(jù)處理中一個(gè)重要的工作,Pandas 作為專(zhuān)業(yè)的數(shù)據(jù)處理分析工具,早就為用戶(hù)封裝好了各種字符串操作的函數(shù),極大的提高了字符串處理的便捷和效率,接下來(lái)我們將打開(kāi) Pandas 字符串操作的大門(mén),一起學(xué)習(xí)豐富且強(qiáng)大的字符串操作。
2. Pandas 字符串操作
Pandas 對(duì)字符串的操作是基于 Series 對(duì)象的 str 屬性,該屬性表示就是字符串對(duì)象,他下面封裝了多種字符串操作函數(shù),正是通過(guò)這些函數(shù),我們可以方便的處理字符串,值得注意的是,Pandas 中的這些操作函數(shù)是單獨(dú)封裝的,實(shí)現(xiàn)上不同于 python 語(yǔ)言自帶的字符串操作函數(shù),使用起來(lái)更加的便捷,效率也更高。另外,Pandas 的 DataFrame 數(shù)據(jù)對(duì)象是不含該屬性的,因此也不具有相應(yīng)的字符串操作函數(shù),但是我們?cè)趯?shí)際應(yīng)用中,往往會(huì)根據(jù)需要獲取 DataFrame 的數(shù)據(jù)子集返回 Series 數(shù)據(jù)對(duì)象,在通過(guò) str 屬性進(jìn)行字符串的操作。
Pandas 中提供了大量的字符串操作方法,我們這里依據(jù)是否影響字符串長(zhǎng)度或內(nèi)容,選取了 Pandas 庫(kù)中常用的一些字符串操作函數(shù)進(jìn)行詳細(xì)講解。
**Tips:** 字符串中的操作函數(shù),是區(qū)分大小寫(xiě)的,這點(diǎn)在使用時(shí)要注意。
在講解之前,我們還是先把 Excel 中的數(shù)據(jù)做一下處理,方便我們后面各個(gè)函數(shù)操作效果的呈現(xiàn)。
解析后輸出的數(shù)據(jù)結(jié)果:
2.1 影響字符串長(zhǎng)度或內(nèi)容的函數(shù)
序號(hào) | 函數(shù) | 說(shuō)明 |
---|---|---|
1 | str.split() | 拆分字符串 |
2 | str.slice() | 按給定的位置截取字符串 |
3 | str.strip() | 刪除字符串中的空格或者換行符 |
4 | str.lower() | 將字符串轉(zhuǎn)換為小寫(xiě) |
5 | str.upper() | 將字符串轉(zhuǎn)換為大寫(xiě) |
6 | str.cat() | 連接字符串列 |
7 | str.replace() | 替換字符串中的元素 |
8 | str.swapcase() | 字符串中的大小寫(xiě)互換 |
下面我們將通過(guò)代碼操作詳細(xì)介紹這幾個(gè)函數(shù)的使用方法:
1. split() 函數(shù)
該函數(shù)根據(jù)指定的元素分割字符串。
# 導(dǎo)入pandas包
import pandas as pd
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第16小節(jié)/execl數(shù)據(jù)demo.xlsx"
# 解析數(shù)據(jù)
data = pd.read_excel(data_path)
print(data)
# --- 輸出結(jié)果 ---
編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人
0 java 1995年 45.6 James Gosling
1 python@163.com 1991年 67.0 Guido van Rossum\n
2 C 1972年 33.9 Dennis MacAlistair Ritchie
3 js@qq.com 1995年 59.5 Brendan Eich
4 php 2012年\n 69.9 Rasmus Lerdorf
5 C++ 1983年 75.0 Bjarne Stroustrup
# split() 函數(shù)
new_series=data["編程語(yǔ)言"]
split_res= new_series.str.split("@")
print(split_res)
# --- 輸出結(jié)果 ---
0 [java]
1 [python, 163.com]
2 [C]
3 [js, qq.com]
4 [php]
5 [C++ ]
Name: 編程語(yǔ)言, dtype: object
結(jié)果解析:首先我們獲得 DataFrame 的 “編程語(yǔ)言” 列,返回的數(shù)據(jù)結(jié)構(gòu)為 Series ,我們通過(guò) str 屬性的 split () 函數(shù),傳入分割依據(jù)的字符,通過(guò)結(jié)果可以看到,存在 @ 字符的字符串均被分割成了多個(gè)子元素,返回結(jié)果也是由列表構(gòu)成的 Series 數(shù)據(jù)集。
2. slice() 函數(shù)
該函數(shù)根據(jù)給定開(kāi)始和結(jié)束的下標(biāo)位置,截取字符串,注意是左閉右開(kāi),不包含右邊的下標(biāo)位置,該函數(shù)有三參數(shù):
- start :開(kāi)始下標(biāo)
- stop :結(jié)束下標(biāo)
- step :步長(zhǎng)
# --- 解析 data 數(shù)據(jù)結(jié)果 ---
編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人
0 java 1995年 45.6 James Gosling
1 python@163.com 1991年 67.0 Guido van Rossum\n
2 C 1972年 33.9 Dennis MacAlistair Ritchie
3 js@qq.com 1995年 59.5 Brendan Eich
4 php 2012年\n 69.9 Rasmus Lerdorf
5 C++ 1983年 75.0 Bjarne Stroustru
# data 解析出來(lái)的數(shù)據(jù)
# slice() 函數(shù)
new_series=data["編程語(yǔ)言"]
slice_res= new_series.str.slice(2,4)
print(slice_res)
# --- 輸出結(jié)果 ---
0 va
1 th
2
3 @q
4 p
5 +
Name: 編程語(yǔ)言, dtype: object
結(jié)果解析:這里我們指定 "編程語(yǔ)言" 列每個(gè)字符串從下標(biāo) 2 截取到下標(biāo) 4,因?yàn)橄聵?biāo)是從 0 開(kāi)始的,因此也就是截取每個(gè)字符串中第 3 和第 4 個(gè)字符,可以看到每個(gè)輸出的結(jié)果。
3. strip() 函數(shù)
該函數(shù)會(huì)去掉字符串中頭和尾的空格已經(jīng)換行符。
# --- 解析 data 數(shù)據(jù)結(jié)果 ---
編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人
0 java 1995年 45.6 James Gosling
1 python@163.com 1991年 67.0 Guido van Rossum\n
2 C 1972年 33.9 Dennis MacAlistair Ritchie
3 js@qq.com 1995年 59.5 Brendan Eich
4 php 2012年\n 69.9 Rasmus Lerdorf
5 C++ 1983年 75.0 Bjarne Stroustru
# data 解析出來(lái)的數(shù)據(jù)
# strip() 函數(shù)
new_series=data["編程語(yǔ)言"]
slice_res= new_series.str.strip()
print(slice_res)
# --- 輸出結(jié)果 ---
0 java
1 python@163.com
2 C
3 js@qq.com
4 php
5 C++
Name: 編程語(yǔ)言, dtype: object
結(jié)果解析:通過(guò)輸出結(jié)果可以看到,“C++” 中原數(shù)據(jù)后面有空格在,使用函數(shù)操作后,空格被刪除。
4. lower() 函數(shù)
該函數(shù)用于將字符串中的所有大寫(xiě)字母轉(zhuǎn)換為小寫(xiě)字母。
# --- 解析 data 數(shù)據(jù)結(jié)果 ---
編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人
0 java 1995年 45.6 James Gosling
1 python@163.com 1991年 67.0 Guido van Rossum\n
2 C 1972年 33.9 Dennis MacAlistair Ritchie
3 js@qq.com 1995年 59.5 Brendan Eich
4 php 2012年\n 69.9 Rasmus Lerdorf
5 C++ 1983年 75.0 Bjarne Stroustru
# data 解析出來(lái)的數(shù)據(jù)
# lower() 函數(shù)
new_series=data["編程語(yǔ)言"]
slice_res= new_series.str.lower()
print(slice_res)
# --- 輸出結(jié)果 ---
0 java
1 python@163.com
2 c
3 js@qq.com
4 php
5 c++
Name: 編程語(yǔ)言, dtype: object
結(jié)果解析:通過(guò)輸出結(jié)果可以看到,“編程語(yǔ)言” 列所有的大寫(xiě)字母都轉(zhuǎn)換成了小寫(xiě)。
5. upper() 函數(shù)
該函數(shù)用于將字符串中的所有小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母。
# --- 解析 data 數(shù)據(jù)結(jié)果 ---
編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人
0 java 1995年 45.6 James Gosling
1 python@163.com 1991年 67.0 Guido van Rossum\n
2 C 1972年 33.9 Dennis MacAlistair Ritchie
3 js@qq.com 1995年 59.5 Brendan Eich
4 php 2012年\n 69.9 Rasmus Lerdorf
5 C++ 1983年 75.0 Bjarne Stroustru
# data 解析出來(lái)的數(shù)據(jù)
# upper() 函數(shù)
new_series=data["編程語(yǔ)言"]
slice_res= new_series.str.upper()
print(slice_res)
# --- 輸出結(jié)果 ---
0 JAVA
1 PYTHON@163.COM
2 C
3 JS@QQ.COM
4 PHP
5 C++
Name: 編程語(yǔ)言, dtype: object
結(jié)果解析:通過(guò)輸出結(jié)果可以看到,"編程語(yǔ)言" 這一列所有的小寫(xiě)字母均轉(zhuǎn)換為了大寫(xiě)字母。
6. cat() 函數(shù)
該函數(shù)用于將兩列合并成一列數(shù)據(jù),前提是兩列都是字符,如果是數(shù)值的話(huà)會(huì)報(bào)錯(cuò)。
# --- 解析 data 數(shù)據(jù)結(jié)果 ---
編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人
0 java 1995年 45.6 James Gosling
1 python@163.com 1991年 67.0 Guido van Rossum\n
2 C 1972年 33.9 Dennis MacAlistair Ritchie
3 js@qq.com 1995年 59.5 Brendan Eich
4 php 2012年\n 69.9 Rasmus Lerdorf
5 C++ 1983年 75.0 Bjarne Stroustrup
# data 解析出來(lái)的數(shù)據(jù)
# cat() 函數(shù)
new_series=data["編程語(yǔ)言"]
new_series_two=data["主要?jiǎng)?chuàng)始人"]
slice_res= new_series.str.cat(new_series_two)
print(slice_res)
# --- 輸出結(jié)果 ---
0 javaJames Gosling
1 python@163.comGuido van Rossum\n
2 CDennis MacAlistair Ritchie
3 js@qq.comBrendan Eich
4 phpRasmus Lerdorf
5 C++ Bjarne Stroustrup
Name: 編程語(yǔ)言, dtype: object
結(jié)果解析:通過(guò) cat () 函數(shù),將 “編程語(yǔ)言” 和 “主要?jiǎng)?chuàng)始人” 兩列進(jìn)行合并,可以看到輸出結(jié)果中的合并結(jié)果。
7. replace() 函數(shù)
該函數(shù)可用于替換字符串的內(nèi)容。
# --- 解析 data 數(shù)據(jù)結(jié)果 ---
編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人
0 java 1995年 45.6 James Gosling
1 python@163.com 1991年 67.0 Guido van Rossum\n
2 C 1972年 33.9 Dennis MacAlistair Ritchie
3 js@qq.com 1995年 59.5 Brendan Eich
4 php 2012年\n 69.9 Rasmus Lerdorf
5 C++ 1983年 75.0 Bjarne Stroustrup
# data 解析出來(lái)的數(shù)據(jù)
# replace() 函數(shù)
new_series=data["編程語(yǔ)言"]
slice_res= new_series.str.replace("com","cn")
print(slice_res)
# --- 輸出結(jié)果 ---
0 java
1 python@163.cn
2 C
3 js@qq.cn
4 php
5 C++
Name: 編程語(yǔ)言, dtype: object
結(jié)果解析:這里我們將 “編程語(yǔ)言” 列字符串中的 com 替換為 cn,通過(guò)輸出結(jié)果可以看到替換的效果。
8. swapcase() 函數(shù)
該函數(shù)用于將字符串中的大小寫(xiě)進(jìn)行相互轉(zhuǎn)換(大寫(xiě)轉(zhuǎn)換為小寫(xiě),小寫(xiě)轉(zhuǎn)換為大寫(xiě))。
# --- 解析 data 數(shù)據(jù)結(jié)果 ---
編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人
0 java 1995年 45.6 James Gosling
1 python@163.com 1991年 67.0 Guido van Rossum\n
2 C 1972年 33.9 Dennis MacAlistair Ritchie
3 js@qq.com 1995年 59.5 Brendan Eich
4 php 2012年\n 69.9 Rasmus Lerdorf
5 C++ 1983年 75.0 Bjarne Stroustrup
# data 解析出來(lái)的數(shù)據(jù)
# swapcase() 函數(shù)
new_series=data["主要?jiǎng)?chuàng)始人"]
slice_res= new_series.str.swapcase()
print(slice_res)
# --- 輸出結(jié)果 ---
0 jAMES gOSLING
1 gUIDO VAN rOSSUM\n
2 dENNIS mACaLISTAIR rITCHIE
3 bRENDAN eICH
4 rASMUS lERDORF
5 bJARNE sTROUSTRUP
Name: 主要?jiǎng)?chuàng)始人, dtype: object
結(jié)果解析:這里我們通過(guò) swapcase 函數(shù)將 “主要?jiǎng)?chuàng)始人” 列中字符串的大小寫(xiě)進(jìn)行了互換,通過(guò)輸出結(jié)果可以看到互換的效果。
2.2 不影響字符串長(zhǎng)度或內(nèi)容的函數(shù)
序號(hào) | 函數(shù) | 說(shuō)明 |
---|---|---|
1 | str.len() | 計(jì)算字符串的長(zhǎng)度 |
2 | str.contains() | 查詢(xún)字符串是否包含某個(gè)字符或子字符串 |
3 | str.find() | 查詢(xún)?cè)氐谝淮卧谧址谐霈F(xiàn)的位置 |
4 | str.count() | 查詢(xún)某個(gè)元素出現(xiàn)的次數(shù) |
5 | str.startswith() | 查詢(xún)字符串是否以某個(gè)元素開(kāi)頭 |
6 | str.endswith() | 查詢(xún)字符串是否以某個(gè)元素結(jié)尾 |
7 | str.istitle() | 查詢(xún)字符串是否首字母大寫(xiě)其他都是小寫(xiě) |
下面我們將通過(guò)代碼操作詳細(xì)介紹這幾個(gè)函數(shù)的使用方法:
1. len() 函數(shù)
該函數(shù)用于返回字符串的的長(zhǎng)度,包括空格和回車(chē)符。
# 導(dǎo)入pandas包
import pandas as pd
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第16小節(jié)/execl數(shù)據(jù)demo.xlsx"
# 解析數(shù)據(jù)
data = pd.read_excel(data_path)
print(data)
# --- 輸出結(jié)果 ---
編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人
0 java 1995年 45.6 James Gosling
1 python@163.com 1991年 67.0 Guido van Rossum\n
2 C 1972年 33.9 Dennis MacAlistair Ritchie
3 js@qq.com 1995年 59.5 Brendan Eich
4 php 2012年\n 69.9 Rasmus Lerdorf
5 C++ 1983年 75.0 Bjarne Stroustrup
# data 解析出來(lái)的數(shù)據(jù)
# len() 函數(shù)
new_series=data["主要?jiǎng)?chuàng)始人"]
slice_res= new_series.str.len()
print(slice_res)
# --- 輸出結(jié)果 ---
0 13
1 17
2 26
3 12
4 14
5 17
Name: 主要?jiǎng)?chuàng)始人, dtype: int64
結(jié)果解析:通過(guò)該函數(shù)可以輸出字符串的長(zhǎng)度,“主要?jiǎng)?chuàng)始人” 列的第二個(gè)字符加上空格和回車(chē)符工 17 個(gè)字符,如果字符前后存在空格,也是加入計(jì)算的。
2. contains() 函數(shù)
該函數(shù)用于檢測(cè)字符串是否包含某個(gè)字符或者是子串,返回值為布爾型。
# --- 解析 data 數(shù)據(jù)結(jié)果 ---
編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人
0 java 1995年 45.6 James Gosling
1 python@163.com 1991年 67.0 Guido van Rossum\n
2 C 1972年 33.9 Dennis MacAlistair Ritchie
3 js@qq.com 1995年 59.5 Brendan Eich
4 php 2012年\n 69.9 Rasmus Lerdorf
5 C++ 1983年 75.0 Bjarne Stroustrup
# data 解析出來(lái)的數(shù)據(jù)
# contains() 函數(shù)
new_series=data["編程語(yǔ)言"]
slice_res= new_series.str.contains("com")
print(slice_res)
# --- 輸出結(jié)果 ---
0 False
1 True
2 False
3 True
4 False
5 False
Name: 編程語(yǔ)言, dtype: bool
結(jié)果解析:通過(guò)該函數(shù)檢測(cè) “編程語(yǔ)言” 列,字符串是否含有子串 com ,該列只有第 2 行和第 4 行含有 com 子串,所以這兩行的檢測(cè)結(jié)果為 True,其他行為 False。
3. find() 函數(shù)
該函數(shù)用于檢測(cè)字符串中第一次出現(xiàn)某個(gè)子串或者字符的下標(biāo)位置,如果不存在則返回為 -1。
# --- 解析 data 數(shù)據(jù)結(jié)果 ---
編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人
0 java 1995年 45.6 James Gosling
1 python@163.com 1991年 67.0 Guido van Rossum\n
2 C 1972年 33.9 Dennis MacAlistair Ritchie
3 js@qq.com 1995年 59.5 Brendan Eich
4 php 2012年\n 69.9 Rasmus Lerdorf
5 C++ 1983年 75.0 Bjarne Stroustrup
# data 解析出來(lái)的數(shù)據(jù)
# find() 函數(shù)
new_series=data["編程語(yǔ)言"]
slice_res= new_series.str.find("com")
print(slice_res)
# --- 輸出結(jié)果 ---
0 -1
1 11
2 -1
3 6
4 -1
5 -1
Name: 編程語(yǔ)言, dtype: int64
結(jié)果解析:通過(guò)該函數(shù)進(jìn)行檢測(cè),可以看到 “編程語(yǔ)言” 列中字符串出現(xiàn) com 子串的位置下標(biāo),第 2 行為 11,第 4 行為 6,其他行因?yàn)椴淮嬖谠撟哟?,所以返?- 1。
4. count() 函數(shù)
該函數(shù)用于統(tǒng)計(jì)字符串中出現(xiàn)某個(gè)子串或者字符的次數(shù)。
# --- 解析 data 數(shù)據(jù)結(jié)果 ---
編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人
0 java 1995年 45.6 James Gosling
1 python@163.com 1991年 67.0 Guido van Rossum\n
2 C 1972年 33.9 Dennis MacAlistair Ritchie
3 js@qq.com 1995年 59.5 Brendan Eich
4 php 2012年\n 69.9 Rasmus Lerdorf
5 C++ 1983年 75.0 Bjarne Stroustrup
# data 解析出來(lái)的數(shù)據(jù)
# count() 函數(shù)
new_series=data["編程語(yǔ)言"]
slice_res= new_series.str.count("o")
print(slice_res)
# --- 輸出結(jié)果 ---
0 0
1 2
2 0
3 1
4 0
5 0
Name: 編程語(yǔ)言, dtype: int64
結(jié)果解析:通過(guò)該函數(shù)檢測(cè) “編程語(yǔ)言” 列,各個(gè)字符串中出現(xiàn)字符 ‘o’ 的次數(shù),通過(guò)輸出結(jié)果可以看到每一個(gè)子串中該字符出現(xiàn)的次數(shù)。
5. startswith() 函數(shù)
該函數(shù)用于檢測(cè)字符串是否以某個(gè)字符或者子串開(kāi)始,返回結(jié)果為布爾型。
# --- 解析 data 數(shù)據(jù)結(jié)果 ---
編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人
0 java 1995年 45.6 James Gosling
1 python@163.com 1991年 67.0 Guido van Rossum\n
2 C 1972年 33.9 Dennis MacAlistair Ritchie
3 js@qq.com 1995年 59.5 Brendan Eich
4 php 2012年\n 69.9 Rasmus Lerdorf
5 C++ 1983年 75.0 Bjarne Stroustrup
# data 解析出來(lái)的數(shù)據(jù)
# startswith() 函數(shù)
new_series=data["編程語(yǔ)言"]
slice_res= new_series.str.startswith("j")
print(slice_res)
# --- 輸出結(jié)果 ---
0 True
1 False
2 False
3 True
4 False
5 False
Name: 編程語(yǔ)言, dtype: bool
結(jié)果解析:通過(guò)該函數(shù),檢測(cè) “編程語(yǔ)言” 列各個(gè)字符串是否以字符 ‘j’ 開(kāi)始,可以看到輸出結(jié)果只有第 1 行和第 4 行是的。
6. endswith() 函數(shù)
該函數(shù)用于檢測(cè)字符串是否以某個(gè)字符或者子串結(jié)尾,返回結(jié)果為布爾型。
# --- 解析 data 數(shù)據(jù)結(jié)果 ---
編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人
0 java 1995年 45.6 James Gosling
1 python@163.com 1991年 67.0 Guido van Rossum\n
2 C 1972年 33.9 Dennis MacAlistair Ritchie
3 js@qq.com 1995年 59.5 Brendan Eich
4 php 2012年\n 69.9 Rasmus Lerdorf
5 C++ 1983年 75.0 Bjarne Stroustrup
# data 解析出來(lái)的數(shù)據(jù)
# endswith() 函數(shù)
new_series=data["編程語(yǔ)言"]
slice_res= new_series.str.endswith("p")
print(slice_res)
# --- 輸出結(jié)果 ---
0 False
1 False
2 False
3 False
4 True
5 False
Name: 編程語(yǔ)言, dtype: bool
# 結(jié)果解析:通過(guò)該函數(shù)對(duì)“編程語(yǔ)言”列的字符串進(jìn)行檢測(cè),是否以字符 'p' 結(jié)尾,通過(guò)輸出結(jié)果可以看到只有第5行的 "php" 是以該字符為結(jié)尾的,檢測(cè)結(jié)果為 True 。
7. istitle() 函數(shù)
該函數(shù)用于檢測(cè)字符串中每個(gè)單詞是否以大寫(xiě)字符開(kāi)頭,并且其他的字符均為小寫(xiě)的內(nèi)容,這里要注意,檢測(cè)的單位是字符串中的每個(gè)單詞。
# --- 解析 data 數(shù)據(jù)結(jié)果 ---
編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人
0 java 1995年 45.6 James Gosling
1 python@163.com 1991年 67.0 Guido van Rossum\n
2 C 1972年 33.9 Dennis MacAlistair Ritchie
3 js@qq.com 1995年 59.5 Brendan Eich
4 php 2012年\n 69.9 Rasmus Lerdorf
5 C++ 1983年 75.0 Bjarne Stroustrup
# data 解析出來(lái)的數(shù)據(jù)
# istitle() 函數(shù)
new_series=data["主要?jiǎng)?chuàng)始人"]
slice_res= new_series.str.istitle()
print(slice_res)
# --- 輸出結(jié)果 ---
0 True
1 False
2 False
3 True
4 True
5 True
Name: 主要?jiǎng)?chuàng)始人, dtype: bool
結(jié)果解析:通過(guò)該函數(shù)檢測(cè) “主要?jiǎng)?chuàng)始人” 列中各個(gè)字符串的每個(gè)單詞是否以大寫(xiě)字母開(kāi)頭,該單詞的其他字符為小寫(xiě),因?yàn)榈?2 行字符串的 “van” 單詞不是以大寫(xiě)字母開(kāi)頭,所有為 False,第 3 行字符串的 “MacAlistair” 雖然是以大寫(xiě)字符開(kāi)頭,但是該單詞的其他字符不全是小寫(xiě),因此也是返回 False 。
3. 小結(jié)
本節(jié)課程我們主要學(xué)習(xí)了 Pandas 庫(kù)對(duì)于字符串的操作處理,Pandas 庫(kù)提供了大量的字符串操作函數(shù),我們這節(jié)課只是學(xué)習(xí)了部分常用的函數(shù)使用方法和注意事項(xiàng),大家可以參考 Pandas 開(kāi)發(fā)文檔,了解 pandas 庫(kù)提供的其他的字符串操作函數(shù)(開(kāi)發(fā)文檔) 。本節(jié)課程的重點(diǎn)如下:
- Pandas 庫(kù)常用的字符串操作函數(shù)的使用和注意事項(xiàng)。