Pandas 處理字符串

2022-09-22 17:05 更新

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)。

lower()

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

len()

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

strip()

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

split(pattern)

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

cat(sep="")

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

get_dummies()

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

contains()

檢查 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

repeat()

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

startswith()

import pandas as pd
import numpy as np
s = pd.Series(['C ',' Python','java','go','1125 ','javascript'])
#若以指定的"j"開頭則返回True
print(s.str.startswith("j"))

輸出結(jié)果:

0    False
1    False
2     True
3    False
4    False
5     True
dtype: bool

find()

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)指定的字符。

findall()

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

swapcase()

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

isnumeric()

返回一個(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


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)