检查 Pandas DataFrame 中某一列是否以给定字符串开头/结尾

pythonserver side programmingprogramming

Pandas 是一个用于数据操作和分析的流行 Python 库。它提供了处理结构化数据(如表格或电子表格)的强大工具。Pandas 可以处理各种数据格式,包括 CSV、Excel、SQL 数据库和 JSON 等。

Pandas 的关键特性之一是它的两个主要数据结构:Series 和 DataFrame。

Series 是一个一维数组状对象,可以保存任何数据类型,如整数、浮点数、字符串甚至 Python 对象。Series 带有标签,这意味着它们具有用于访问和操作数据的索引。

DataFrame 是一个二维表状数据结构,具有行和列,类似于电子表格或 SQL 表。它可以包含多种数据类型,可以被视为 Series 的集合。 DataFrames 非常强大且灵活,因为它们可以通过多种方式进行操作,例如过滤、合并、分组和转换数据。

Pandas 提供了许多用于处理 DataFrames 的工具,包括用于索引、选择和过滤数据的方法,以及统计和数学运算。Pandas 还包括用于处理缺失数据、重塑数据和处理时间序列数据的工具。

要创建 DataFrame,您可以将字典或列表列表传递给 DataFrame 构造函数。字典中的每个键代表 DataFrame 中的一列,值代表该列中的数据。或者,您可以从 CSV、Excel、SQL 数据库或其他数据格式创建 DataFrame。

总体而言,Pandas 是一个功能强大且灵活的库,用于处理 Python 中的结构化数据,其 DataFrame 数据结构是其最重要的功能之一。 Pandas 功能强大且易于使用,是任何使用 Python 处理数据的数据科学家或分析师的必备工具。

现在我们已经详细了解了 Pandas 和 Pandas dataFrame,让我们来谈谈 Pandas endswith() 方法。

endswith()

Pandas 中的 endswith() 方法也可以应用于 DataFrame,以检查指定列中的每个元素是否以给定的字符串或字符结尾。该方法返回一个布尔 DataFrame 对象,其形状与原始 DataFrame 相同。

在 Pandas 中将 endswith() 方法与 DataFrame 结合使用的语法如下:

DataFrame[column_name].str.endswith(suffix, na=None)

其中 DataFrame 是要应用该方法的 DataFrame 的名称,column_name 是要检查 endswith 条件的列的名称,suffix 是要检查列中每个元素是否以此结尾的字符串或字符序列,na 是可选参数,用于指定应如何处理缺失值或空值。

为了说明这一点,让我们考虑一个例子,其中我们有一个员工数据集,其中包含"Employee_ID"、"Name"、"Department"等信息, 'Salary'。

示例

# 导入 pandas 库并将其重命名为 pd
import pandas as pd

# 为员工创建 DataFrame
employee_df = pd.DataFrame({
    'Employee_ID': ['E101', 'E102', 'E103', 'E104', 'E105'],
    'Name': ['John', 'Emily', 'Mark', 'Sarah', 'Jessica'],
    'Department': ['Sales', 'HR', 'IT', 'Marketing', 'Finance'],
    'Salary': [50000, 60000, 75000, 80000, 90000]
})

# 打印原始 DataFrame
print("打印原始员工 DataFrame:")
print(employee_df)

说明

此代码使用 Pandas 库从字典创建 DataFrame。以下是代码各部分的作用:

  • import pandas as pd:此行导入 Pandas 库并将其重命名为"pd",以便我们在代码中更轻松地引用它。

  • data = {'name': ['John', 'Emily', 'Mark', 'Jessica'], 'age': [25, 32, 18, 47], 'country': ['USA', 'Canada', 'UK', 'USA'], 'gender': ['M', 'F', 'M', 'F']}:此行创建一个名为"data"的字典,其键为"name"、"age"、"country"和"gender"。每个键都有一个与该列的数据相对应的值列表。

  • df = pd.DataFrame(data):此行从字典"data"创建一个名为"df"的 DataFrame。Pandas 自动使用字典的键作为 DataFrame 的列标题,并使用每个列表中的值作为相应列中的值。

  • print(df):此行将 DataFrame 打印到控制台。输出将如下所示:

要运行上述代码,我们需要运行下面显示的命令。

命令

python3 main.py

输出

Printing Original Employee DataFrame:
  Employee_ID     Name Department  Salary
0        E101     John      Sales   50000
1        E102    Emily         HR   60000
2        E103     Mark         IT   75000
3        E104    Sarah  Marketing   80000
4        E105  Jessica    Finance   90000

现在让我们使用上述代码中的 endswith() 方法。

在第一个示例中,我们将检查 dataFrame 列 Department 是否包含"IT"。

考虑下面显示的代码。

示例

# 导入 pandas 库并将其重命名为 pd
import pandas as pd

# 为员工创建 DataFrame
employee_df = pd.DataFrame({
    'Employee_ID': ['E101', 'E102', 'E103', 'E104', 'E105'],
    'Name': ['John', 'Emily', 'Mark', 'Sarah', 'Jessica'],
    'Department': ['Sales', 'HR', 'IT', 'Marketing', 'Finance'],
    'Salary': [50000, 60000, 75000, 80000, 90000]
})

# 打印原始 DataFrame
print("Printing Original Employee DataFrame:")
# print(employee_df)

# 将 lambda 函数应用于"Department"列中的每个值
# lambda 函数使用 `endswith()` 字符串方法检查字符串是否以"IT"结尾
# `map()` 函数将 lambda 函数应用于列中的每个值并返回布尔值列表
# 该列表用于在 `employee_df` DataFrame 中创建新列
employee_df['TutorialsPoint_Emp'] = list(
	map(lambda x: x.endswith('IT'), employee_df['Department']))

# 打印带有添加列的新 DataFrame
print(employee_df)

在本例中,endswith() 函数用于执行条件检查并根据检查结果创建新列。它是数据操作和过滤的有用工具,尤其是在处理文本数据时。

此代码的输出将是一个修改后的 DataFrame,其中有一个名为"TutorialsPoint_Emp"的附加列。此列包含布尔值,指示员工是否在 IT 部门工作(True)或不工作(False)。输出将如下所示:

要运行上述代码,我们需要运行下面显示的命令。

命令

python3 main.py

输出

Printing Original Employee DataFrame:
  Employee_ID     Name Department  Salary  TutorialsPoint_Emp
0        E101     John      Sales   50000              False
1        E102    Emily         HR   60000               False
2        E103     Mark         IT   75000                True
3        E104    Sarah  Marketing   80000          False
4        E105  Jessica    Finance   90000          False

现在让我们尝试在另一列上使用 endswith() 方法。

考虑下面显示的代码。

示例

# 导入 pandas 库并将其重命名为 pd
import pandas as pd

# 为员工创建 DataFrame
employee_df = pd.DataFrame({
    'Employee_ID': ['E101', 'E102', 'E103', 'E104', 'E105'],
    'Name': ['John', 'Emily', 'Mark', 'Sarah', 'Jessica'],
    'Department': ['Sales', 'HR', 'IT', 'Marketing', 'Finance'],
    'Salary': [50000, 60000, 75000, 80000, 90000]
})

# 打印原始 DataFrame
print("Printing Original Employee DataFrame:")
# print(employee_df)

# 在数据框中加入新列
# endwith 函数用于检查
employee_df['TutorialsPoint_Emp'] = list(
	map(lambda x: x.endswith('Sarah'), employee_df['Name']))
	
# 打印新数据框
print(employee_df)

说明

在上面的代码中,我们使用 map() 函数和 lambda 函数来检查每个员工的名字是否以字符串"Sarah"结尾。这是使用 endswith() 方法实现的,该方法返回一个布尔值,指示给定字符串是否以指定的后缀结尾。

然后使用 list() 函数将生成的布尔值转换为列表,并存储在名为"TutorialsPoint_Emp"的 DataFrame 新列中。

最后,使用 print() 函数打印修改后的 DataFrame。输出将显示原始员工信息以及一个新列,指示每个员工的名字是否以"Sarah"结尾。

要运行上面的代码,我们需要运行下面显示的命令。

命令

python3 main.py

输出

Printing Original Employee DataFrame:
  Employee_ID     Name Department  Salary  TutorialsPoint_Emp
0        E101     John      Sales   50000               False
1        E102    Emily         HR   60000               False
2        E103     Mark         IT   75000               False
3        E104    Sarah  Marketing   80000                True
4        E105  Jessica    Finance   90000               False

结论

总之,Pandas DataFrame 中的 endswith() 方法允许我们检查给定列的元素是否以指定的后缀结尾。此方法可用于根据 DataFrame 列中存在的某些字符串模式来操作数据。通过使用 endswith() 方法,我们可以根据特定标准过滤和转换数据,使其成为数据分析和数据清理任务的有用工具。


相关文章