一、str.contains()方法說明
str.contains()方法是Python pandas庫中的一種常用方法,主要用於檢查字元串中是否包含某個指定的內容,返回值是布爾類型。
該方法的語法格式如下所示:
Series.str.contains(pat, case=True, flags=0, na=nan, regex=True)
其中參數說明如下:
- pat:為要匹配的字元串。
- case:True or False,默認為True,表示區分大小寫。
- flags:更改匹配方式,例如:忽略大小寫、多行匹配等。
- na:指定替換缺失值的值。
- regex:正則表達式模式。
二、實例演示
我們可以通過以下示例演示,如何使用str.contains()方法進行字元串匹配。
示例代碼如下所示:
import pandas as pd
data = {'names': ['Amy', 'Bob', 'Cathy', 'Don', 'Eve'],
'location': ['California', 'New York', 'Utah', 'Texas', 'Florida']}
df = pd.DataFrame(data)
# 檢查名字列是否包含指定內容 'o'
df['name_contains_o'] = df['names'].str.contains('o')
print(df)
輸出結果如下所示:
names location name_contains_o
0 Amy California True
1 Bob New York False
2 Cathy Utah True
3 Don Texas False
4 Eve Florida False
上面的示例中,我們首先創建了一個包含名字和地址的DataFrame,然後使用str.contains()方法檢查名字列是否包含字母’o’,並添加了一個結果列。結果表明,對於所有包含字母’o’的名字,結果列中都顯示為True,反之則為False。
三、使用正則表達式進行匹配
在使用str.contains()方法時,如果將regex參數設置為True,則可以使用正則表達式進行字元串匹配。
例如,我們想找到名字中以’b’或’c’開頭的人,可以使用以下正則表達式進行匹配:
import pandas as pd
data = {'names': ['Amy', 'Bob', 'Cathy', 'Don', 'Eve'],
'location': ['California', 'New York', 'Utah', 'Texas', 'Florida']}
df = pd.DataFrame(data)
# 使用正則表達式進行匹配
df['name_starts_with_b_or_c'] = df['names'].str.contains('^[bc]')
print(df)
輸出結果如下:
names location name_starts_with_b_or_c
0 Amy California False
1 Bob New York True
2 Cathy Utah True
3 Don Texas False
4 Eve Florida False
上面的示例中,我們以’^[bc]’正則表達式為條件,檢查包含字母’b’或’c’開頭的名字,並添加結果列。結果表明,只有Bob和Cathy的名字以’b’或’c’開頭,因此結果列中的值為True。
四、case參數的使用
在使用str.contains()方法時,case參數默認為True,表示是否區分大小寫。如果我們想不區分大小寫,則可以將case參數設置為False。
例如,我們想要找到含有字母’a’的名字,而不關心其大小寫,可以使用以下示例代碼:
import pandas as pd
data = {'names': ['Amy', 'Bob', 'Cathy', 'Don', 'Eve'],
'location': ['California', 'New York', 'Utah', 'Texas', 'Florida']}
df = pd.DataFrame(data)
# case參數為False,不區分大小寫
df['contains_a_case_insensitive'] = df['names'].str.contains('a', case=False)
print(df)
輸出結果如下所示:
names location contains_a_case_insensitive
0 Amy California True
1 Bob New York False
2 Cathy Utah True
3 Don Texas False
4 Eve Florida False
上面的示例中,我們以字母’a’為條件進行匹配,並將case參數設置為False,表示不區分大小寫。結果表明,所有包含字母’a’的名字都被識別出來了。
五、flags參數的使用
在使用str.contains()方法時,如果想更改匹配方式,比如忽略大小寫、多行匹配等,可以使用flags參數進行更改。下面是一個使用flags參數的示例代碼:
import pandas as pd
data = {'text': ['The quick brown fox jumps over the lazy dog.',
'THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG.',
'The quack brown fox jumps over the lazy dog.']}
df = pd.DataFrame(data)
# 將'multiline'標誌傳遞給flags參數
df['contains_dog'] = df['text'].str.contains('dog', flags=re.MULTILINE)
print(df)
輸出結果如下所示:
text contains_dog
0 The quick brown fox jumps over the lazy dog. True
1 THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG. True
2 The quack brown fox jumps over the lazy dog. True
上面的示例中,我們將字元串中的dog匹配標誌設置為multiline,則即使在多行文本中也會識別出dog。
六、na參數的使用
在使用str.contains()方法時,如果字元串中存在缺失值,我們可以使用na參數指定替換缺失值的值。
下面是一個使用na參數的示例代碼:
import pandas as pd
import numpy as np
data = {'text': ['The quick brown fox jumps over the lazy dog.',
np.nan,
'The quack brown fox jumps over the lazy dog.']}
df = pd.DataFrame(data)
# 將na參數設置為False
df['contains_dog'] = df['text'].str.contains('dog', na=False)
print(df)
輸出結果如下所示:
text contains_dog
0 The quick brown fox jumps over the lazy dog. True
1 NaN False
2 The quack brown fox jumps over the lazy dog. True
上面的示例中,我們將na參數設置為False,表示將缺失值看作不包含任何內容,並對其進行了替換。
七、總結
本文主要介紹了Python pandas庫中的str.contains()方法,該方法用於檢查字元串中是否包含某個指定的內容,支持正則表達式匹配,可以使用case、flags和na等參數更改匹配方式和替換缺失值。該方法在數據清洗和處理文本數據等場景中非常實用。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/182276.html