str.contains()
在 pandas
中,str.contains
方法用于检查 DataFrame 或 Series 中字符串元素是否包含特定的子字符串。它返回一个布尔值(True
或 False
)的 Series,表示每个元素是否匹配指定的模式或子字符串。
参数
-
pat
:要搜索的模式或子字符串。可以是字符串或正则表达式。 -
case
:是否区分大小写。默认为True
(区分大小写),如果设置为False
,则不区分大小写。 -
na
:如何处理缺失值(NaN
)。默认为nan
(返回NaN
),也可以设置为False
(返回False
)。
以下是 str.contains
方法的一些关键点和用法示例:
基本用法
import pandas as pd
# 创建一个示例 DataFrame
df = pd.DataFrame({
'text': ['hello world', 'pandas is great', 'data science', 'python pandas']
})
# 检查 'text' 列中是否包含子字符串 'pandas'
contains_pandas = df['text'].str.contains('pandas')
print(contains_pandas)
输出:
0 False
1 True
2 False
3 True
Name: text, dtype: bool
示例:
不区分大小写的搜索
import pandas as pd
# 创建一个示例 DataFrame
df = pd.DataFrame({
'text': ['hello world', 'pandas is great', 'data science', 'python pandas']
})
# 不区分大小写地检查 'text' 列中是否包含子字符串 'PANDAS'
contains_pandas_ignorecase = df['text'].str.contains('PANDAS', case=False)
print(contains_pandas_ignorecase)
输出:
0 False
1 True
2 False
3 True
Name: text, dtype: bool
使用布尔 Series 进行过滤
你可以将 str.contains
返回的布尔 Series 用作过滤条件,以选择包含特定子字符串的行:
import pandas as pd
# 创建一个示例 DataFrame
df = pd.DataFrame({
'text': ['hello world', 'pandas is great', 'data science', 'python pandas']
})
# 选择包含 'pandas' 的行
df_contains_pandas = df[df['text'].str.contains('pandas')]
print(df_contains_pandas)
输出:
text
1 pandas is great
3 python pandas
注意事项
- 如果
pat
参数是一个正则表达式,你可以使用正则表达式的特性来匹配更复杂的模式。 str.contains
方法仅在字符串类型的列上有效。如果列包含非字符串数据,你可能会在调用该方法之前需要先将列转换为字符串类型。
总之,str.contains
是 pandas
中一个非常有用的方法,用于在字符串数据中搜索特定的子字符串或模式。