Pandas 提供了一系列的字符串函數(shù),因此能夠很方便地對字符串進(jìn)行處理。在本節(jié),我們使用 Series 對象對常用的字符串函數(shù)進(jìn)行講解。
常用的字符串處理函數(shù)如下表所示:
函數(shù)名稱 | 函數(shù)功能和描述 |
---|---|
lower() | 將的字符串轉(zhuǎn)換為小寫。 |
upper() | 將的字符串轉(zhuǎn)換為大寫。 |
len() | 得出字符串的長度。 |
strip() | 去除字符串兩邊的空格(包含換行符)。 |
split() | 用指定的分割符分割字符串。 |
cat(sep="") | 用給定的分隔符連接字符串元素。 |
get_dummies() | 返回一個(gè)帶有獨(dú)熱編碼值的 DataFrame 結(jié)構(gòu)。 |
contains(pattern) | 如果子字符串包含在元素中,則為每個(gè)元素返回一個(gè)布爾值 True,否則為 False。 |
replace(a,b) | 將值 a 替換為值 b。 |
count(pattern) | 返回每個(gè)字符串元素出現(xiàn)的次數(shù)。 |
startswith(pattern) | 如果 Series 中的元素以指定的字符串開頭,則返回 True。 |
endswith(pattern) | 如果 Series 中的元素以指定的字符串結(jié)尾,則返回 True。 |
findall(pattern) | 以列表的形式返出現(xiàn)的字符串。 |
swapcase() | 交換大小寫。 |
islower() | 返回布爾值,檢查 Series 中組成每個(gè)字符串的所有字符是否都為小寫。 |
issupper() | 返回布爾值,檢查 Series 中組成每個(gè)字符串的所有字符是否都為大寫。 |
isnumeric() | 返回布爾值,檢查 Series 中組成每個(gè)字符串的所有字符是否都為數(shù)字。 |
repeat(value) | 以指定的次數(shù)重復(fù)每個(gè)元素。 |
find(pattern) | 返回字符串第一次出現(xiàn)的索引位置。 |
注意:上述所有字符串函數(shù)全部適用于 DataFrame 對象,同時(shí)也可以與 Python 內(nèi)置的字符串函數(shù)一起使用,這些函數(shù)在處理 Series/DataFrame 對象的時(shí)候會(huì)自動(dòng)忽略缺失值數(shù)據(jù)(NaN)。
import pandas as pd
import numpy as np
s = pd.Series(['C', 'Python', 'java', 'go', np.nan, '1125','javascript'])
print(s.str.lower())
輸出結(jié)果:
0 tom 1 william rick 2 john 3 alber@t 4 NaN 5 1234 6 stevesmith dtype: object
import pandas as pd
import numpy as np
s = pd.Series(['C', 'Python', 'java', 'go', np.nan, '1125','javascript'])
print(s.str.len())
輸出結(jié)果:
0 1.0 1 6.0 2 4.0 3 2.0 4 NaN 5 4.0 6 10.0 dtype: float64
import pandas as pd
import numpy as np
s = pd.Series(['C ', ' Python', 'java', 'go', np.nan, '1125 ','javascript'])
print(s.str.strip())
輸出結(jié)果:
0 C 1 Python 2 java 3 go 4 NaN 5 1125 6 javascript dtype: object
import pandas as pd
import numpy as np
s = pd.Series(['C ',' Python','java','go','1125 ','javascript'])
print(s.str.split(" "))
輸出結(jié)果:
0 [C, ] 1 [, Python] 2 [java] 3 [go] 4 [1125, ] 5 [javascript] dtype: object
import pandas as pd
import numpy as np
s = pd.Series(['C', 'Python', 'java', 'go', np.nan, '1125','javascript'])
#會(huì)自動(dòng)忽略NaN
print(s.str.cat(sep="_"))
輸出結(jié)果:
C_Python_java_go_1125_javascript
import pandas as pd
import numpy as np
s = pd.Series(['C', 'Python', 'java', 'go', np.nan, '1125','javascript'])
print(s.str.get_dummies())
輸出結(jié)果:
1125 C Python go java javascript 0 0 1 0 0 0 0 1 0 0 1 0 0 0 2 0 0 0 0 1 0 3 0 0 0 1 0 0 4 0 0 0 0 0 0 5 1 0 0 0 0 0 6 0 0 0 0 0 1
檢查 Series 中的每個(gè)字符,如果字符中包含空格,則返回 True,否則返回 False。示例如下:
import pandas as pd
import numpy as np
s = pd.Series(['C ',' Python','java','go','1125 ','javascript'])
print(s.str.contains(" "))
輸出結(jié)果:
0 True 1 True 2 False 3 False 4 True 5 False dtype: bool
import pandas as pd
import numpy as np
s = pd.Series(['C ',' Python','java','go','1125 ','javascript'])
print(s.str.repeat(3))
輸出結(jié)果:
0 C C C 1 Python Python Python 2 javajavajava 3 gogogo 4 1125 1125 1125 5 javascriptjavascriptjavascript dtype: object
import pandas as pd
import numpy as np
s = pd.Series(['C ',' Python','java','go','1125 ','javascript'])
#若以指定的"j"開頭則返回True
print(s.str.startswith("j"))
0 False 1 False 2 True 3 False 4 False 5 True dtype: bool
import pandas as pd
import numpy as np
s = pd.Series(['C ',' Python','java','go','1125 ','javascript'])
print(s.str.find("j"))
輸出結(jié)果:
0 -1 1 -1 2 0 3 -1 4 -1 5 0 dtype: int64
如果返回 -1 表示該字符串中沒有出現(xiàn)指定的字符。
import pandas as pd
import numpy as np
s = pd.Series(['C ',' Python','java','go','1125 ','javascript'])
print(s.str.findall("j"))
輸出結(jié)果:
0 [] 1 [] 2 [j] 3 [] 4 [] 5 [j] dtype: object
import pandas as pd
import numpy as np
s = pd.Series(['C ',' Python','java','go','1125 ','javascript'])
print(s.str.swapcase())
輸出結(jié)果:
0 c 1 pYTHON 2 JAVA 3 GO 4 1125 5 JAVASCRIPT dtype: object
返回一個(gè)布爾值,用來判斷是否存在數(shù)字型字符串。示例如下:
import pandas as pd
import numpy as np
s = pd.Series(['C ',' Python','java','go','1125','javascript'])
print(s.str.isnumeric())
輸出結(jié)果:
0 False 1 False 2 False 3 False 4 True 5 False dtype: bool
更多建議: