📅  最后修改于: 2023-12-03 15:04:17.682000             🧑  作者: Mango
在数据分析和机器学习中,我们时常需要检查数据框中某个系列(列)是否包含指定的字符串。这个操作在数据清洗和预处理中非常常见。在Python中,我们可以使用pandas库提供的str属性来实现此功能。
假设我们有以下数据框df:
| Name | Age | Gender | |------|-----|--------| | Alice | 22 | Female | | Bob | 27 | Male | | Charlie | 30 | Male | | David | 20 | Male |
我们想要检查Gender系列是否包含字符串'Male',我们可以使用下面的代码:
import pandas as pd
# 创建数据框
data = {'Name':['Alice', 'Bob', 'Charlie', 'David'],
'Age':[22, 27, 30, 20],
'Gender':['Female', 'Male', 'Male', 'Male']}
df = pd.DataFrame(data)
# 检查Gender系列是否包含'Male'
print(df['Gender'].str.contains('Male'))
输出结果为:
0 False
1 True
2 True
3 True
Name: Gender, dtype: bool
这说明Gender系列中第2、3、4个元素包含字符串'Male',第1个元素不包含。
如果要同时检查多个系列是否包含指定的字符串,我们可以使用apply()方法和lambda表达式来实现。同样以检查数据框df中包含'Male'的系列为例:
import pandas as pd
# 创建数据框
data = {'Name':['Alice', 'Bob', 'Charlie', 'David'],
'Age':[22, 27, 30, 20],
'Gender':['Female', 'Male', 'Male', 'Male']}
df = pd.DataFrame(data)
# 检查Name和Gender系列是否包含'Male'
print(df[['Name', 'Gender']].apply(lambda x: x.str.contains('Male')))
输出结果为:
Name Gender
0 False False
1 False True
2 False True
3 False True
这说明Name和Gender系列中均没有包含字符串'Male'的元素。
除了检查是否包含指定字符串,我们还可以检查某个系列中的元素是否以指定字符串开头或结尾。例如,我们想要知道数据框df中Gender系列的元素是否以字母'M'开头,可以使用startswith()方法:
import pandas as pd
# 创建数据框
data = {'Name':['Alice', 'Bob', 'Charlie', 'David'],
'Age':[22, 27, 30, 20],
'Gender':['Female', 'Male', 'Male', 'Male']}
df = pd.DataFrame(data)
# 检查Gender系列中元素是否以'M'开头
print(df['Gender'].str.startswith('M'))
输出结果为:
0 False
1 True
2 True
3 True
Name: Gender, dtype: bool
这说明Gender系列中第2、3、4个元素以字母'M'开头,第1个元素不以字母'M'开头。类似地,我们可以使用endswith()方法检查元素是否以指定字符串结尾。
总之,使用pandas的str属性可以方便地实现对数据框中系列包含特定字符串的检查。