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


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

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

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

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

Pandas 提供了许多用于处理 DataFrame 的工具,包括用于索引、选择和过滤数据的方法,以及统计和数学运算。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 是一个可选参数,用于指定如何处理缺失值或空值。

为了说明这一点,让我们考虑一个包含员工信息(例如“员工 ID”、“姓名”、“部门”和“薪水”)的员工数据集的示例。

示例

# Importing the pandas library and renaming it as pd
import pandas as pd

# Creating a DataFrame for employees
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]
})

# Printing the original DataFrame
print("Printing Original Employee 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”。

考虑下面显示的代码。

示例

# Importing the pandas library and renaming it as pd
import pandas as pd

# Creating a DataFrame for employees
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]
})

# Printing the original DataFrame
print("Printing Original Employee DataFrame:")
# print(employee_df)

# Applying a lambda function to each value in the "Department" column
# The lambda function uses the `endswith()` string method to check if the string ends with "IT"
# The `map()` function applies the lambda function to each value in the column and returns a list of boolean values
# The list is used to create a new column in the `employee_df` DataFrame
employee_df['TutorialsPoint_Emp'] = list(
	map(lambda x: x.endswith('IT'), employee_df['Department']))

# Printing the new DataFrame with the added column
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() 方法。

考虑下面显示的代码。

示例

# Importing the pandas library and renaming it as pd
import pandas as pd

# Creating a DataFrame for employees
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]
})

# Printing the original DataFrame
print("Printing Original Employee DataFrame:")
# print(employee_df)

# joining new column in dataframe
# endwith function used to check
employee_df['TutorialsPoint_Emp'] = list(
	map(lambda x: x.endswith('Sarah'), employee_df['Name']))
	
# printing new data frame
print(employee_df)

解释

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

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

最后,使用 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() 方法允许我们检查给定列的元素是否以指定的 suffix 结尾。此方法可用于根据 DataFrame 列中存在的某些字符串模式来操作数据。通过使用 endswith() 方法,我们可以根据特定条件过滤和转换数据,使其成为数据分析和数据清理任务的有用工具。

更新于:2023年8月2日

2K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始
广告
© . All rights reserved.