📌  相关文章
📜  python 检查数据框系列是否包含字符串 - Python (1)

📅  最后修改于: 2023-12-03 15:04:17.682000             🧑  作者: Mango

Python检查数据框系列是否包含字符串

在数据分析和机器学习中,我们时常需要检查数据框中某个系列(列)是否包含指定的字符串。这个操作在数据清洗和预处理中非常常见。在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属性可以方便地实现对数据框中系列包含特定字符串的检查。