pandas之字符串操作


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

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

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

注意:上述所有字符串函數全部適用於 DataFrame 對象,同時也可以與 Python 內置的字符串函數一起使用,這些函數在處理 Series/DataFrame 對象的時候會自動忽略缺失值數據(NaN)。

lower()

  1. import pandas as pd
  2. import numpy as np
  3. s = pd.Series(['C', 'Python', 'java', 'go', np.nan, '1125','javascript'])
  4. print(s.str.lower)

輸出結果:

0             tom
1    william rick
2            john
3         alber@t
4             NaN
5            1234
6      stevesmith
dtype: object

len()

  1. import pandas as pd
  2. import numpy as np
  3. s = pd.Series(['C', 'Python', 'java', 'go', np.nan, '1125','javascript'])
  4. 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()

  1. import pandas as pd
  2. import numpy as np
  3. s = pd.Series(['C ', ' Python', 'java', 'go', np.nan, '1125 ','javascript'])
  4. print(s.str.strip())

輸出結果:

0             C
1        Python
2          java
3            go
4           NaN
5          1125
6    javascript
dtype: object

split(pattern)

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

輸出結果:

0           [C, ]
1      [, Python]
2          [java]
3            [go]
4        [1125, ]
5    [javascript]
dtype: object

cat(sep="")

  1. import pandas as pd
  2. import numpy as np
  3. s = pd.Series(['C', 'Python', 'java', 'go', np.nan, '1125','javascript'])
  4. #會自動忽略NaN
  5. print(s.str.cat(sep="_"))

輸出結果:

C_Python_java_go_1125_javascript

get_dummies()

  1. import pandas as pd
  2. import numpy as np
  3. s = pd.Series(['C', 'Python', 'java', 'go', np.nan, '1125','javascript'])
  4. 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。示例如下:

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

輸出結果:

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

repeat()

  1. import pandas as pd
  2. import numpy as np
  3. s = pd.Series(['C ',' Python','java','go','1125 ','javascript'])
  4. 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()

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

輸出結果:

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

find()

  1. import pandas as pd
  2. import numpy as np
  3. s = pd.Series(['C ',' Python','java','go','1125 ','javascript'])
  4. print(s.str.find("j"))

輸出結果:

0   -1
1   -1
2    0
3   -1
4   -1
5    0
dtype: int64

如果返回 -1 表示該字符串中沒有出現指定的字符。

findall()

  1. import pandas as pd
  2. import numpy as np
  3. s = pd.Series(['C ',' Python','java','go','1125 ','javascript'])
  4. print(s.str.findall("j"))

輸出結果:

0     []
1     []
2    [j]
3     []
4     []
5    [j]
dtype: object

swapcase()

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

輸出結果:

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

isnumeric()

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

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

輸出結果:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM