Pandas 處理字符串

2022-09-22 17:05 更新

Pandas 提供了一系列的字符串函數(shù),因此能夠很方便地對字符串進行處理。在本節(jié),我們使用 Series 對象對常用的字符串函數(shù)進行講解。

常用的字符串處理函數(shù)如下表所示:

函數(shù)名稱 函數(shù)功能和描述
lower() 將的字符串轉換為小寫。
upper() 將的字符串轉換為大寫。
len() 得出字符串的長度。
strip() 去除字符串兩邊的空格(包含換行符)。
split() 用指定的分割符分割字符串。
cat(sep="") 用給定的分隔符連接字符串元素。
get_dummies() 返回一個帶有獨熱編碼值的 DataFrame 結構。
contains(pattern) 如果子字符串包含在元素中,則為每個元素返回一個布爾值 True,否則為 False。
replace(a,b) 將值 a 替換為值 b。
count(pattern) 返回每個字符串元素出現(xiàn)的次數(shù)。
startswith(pattern) 如果 Series 中的元素以指定的字符串開頭,則返回 True。
endswith(pattern) 如果 Series 中的元素以指定的字符串結尾,則返回 True。
findall(pattern) 以列表的形式返出現(xiàn)的字符串。
swapcase() 交換大小寫。
islower() 返回布爾值,檢查 Series 中組成每個字符串的所有字符是否都為小寫。
issupper() 返回布爾值,檢查 Series 中組成每個字符串的所有字符是否都為大寫。
isnumeric() 返回布爾值,檢查 Series 中組成每個字符串的所有字符是否都為數(shù)字。
repeat(value) 以指定的次數(shù)重復每個元素。
find(pattern) 返回字符串第一次出現(xiàn)的索引位置。

注意:上述所有字符串函數(shù)全部適用于 DataFrame 對象,同時也可以與 Python 內置的字符串函數(shù)一起使用,這些函數(shù)在處理 Series/DataFrame 對象的時候會自動忽略缺失值數(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())

輸出結果:

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

輸出結果:

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

輸出結果:

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(" "))

輸出結果:

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'])
#會自動忽略NaN
print(s.str.cat(sep="_"))

輸出結果:

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

輸出結果:

   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 中的每個字符,如果字符中包含空格,則返回 True,否則返回 False。示例如下:

import pandas as pd
import numpy as np
s = pd.Series(['C ',' Python','java','go','1125 ','javascript'])
print(s.str.contains(" "))

輸出結果:

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

輸出結果:

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

輸出結果:

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

輸出結果:

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

輸出結果:

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

輸出結果:

0            c
1        pYTHON
2          JAVA
3            GO
4         1125
5    JAVASCRIPT
dtype: object

isnumeric()

返回一個布爾值,用來判斷是否存在數(shù)字型字符串。示例如下:

import pandas as pd
import numpy as np
s = pd.Series(['C ',' Python','java','go','1125','javascript'])
print(s.str.isnumeric())

輸出結果:

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


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號