在 Pandas 中应用 If-Else 条件语句的 5 种方法

2025年3月3日 | 阅读 5 分钟

Pandas 是 Python 中一种强大的数据处理工具包,通常用于数据分析和准备。 它的优势之一是能够将条件逻辑应用于 DataFrame 组件,这使客户能够添加额外的列、过滤数据并根据指定的条件进行复杂的更改。 在本教程中,我们将研究在 Pandas 中使用 if-else 条件语句的五种不同方法,每种方法都有实际示例。

了解在 Pandas 中应用 If-Else 条件语句的不同方法

在以下部分中,我们将讨论在 Pandas 中应用 if-else 条件语句的不同方法。 其中一些方法如下:

  1. 使用 numpy.where() 方法
  2. 使用 apply() 方法
  3. 使用 loc[] 索引器
  4. 使用 map() 方法
  5. 使用 mask() 方法

现在让我们在一些示例的帮助下详细讨论这些方法。

使用 numpy.where() 方法应用 If-Else 条件语句

NumPy 库的 'np.where()' 工作可能是在 Pandas DataFrames 中利用条件逻辑的强大工具。 它使您能够向量化条件的应用程序,使其更有效且更容易转换。 np.where(condition, [x, y]) 是一种从 x 或 y 中检索基于条件的组件的工作。 如果条件为真,则它从 x 中获取组件;否则,它从 y 中获取组件。 此方法对于数组或 DataFrame 列上的向量化操作特别有用,因为它逐个元素地运行,并且由于其 C 实现而非常高效。

示例

假设我们有一个包含学生分数的 DataFrame df,并且想要添加一个新列结果,如果学生的分数等于或高于 50,则将其归类为“通过”,否则归类为“失败”。

代码

输出

 
     student  score  result
0    Amy     85     Pass
1      Fred     40   Fail
2    Carl  75   Pass
3    Don    30   Fail
4      Eva     90   Pass   

使用 apply() 方法应用 If-Else 条件语句

Pandas .apply() 方法允许您沿着 DataFrame 的轴之一(行或列)应用工作。 此方法用途广泛,可用于包含多个列的更复杂的场景。 .apply() 是一种能够为 DataFrame 或 Series 的每个组件分配自定义功能的强大方法。 该函数可以是 lambda 函数或预定义函数。 当连接到 DataFrame 时,axis 参数允许您定义函数应该按行连接还是按列连接。 此方法最适合扩展简单向量化操作的更现代的更改。

示例

继续我们的学生分数示例,让我们使用自定义函数根据分数给出字母等级。

代码

输出

 
   student  score  result  grade
0    Amy     85   Pass     B
1     Fred     40   Fail      F
2    Carl  75   Pass     C
3    Don    30   Fail      F
4      Eva     90   Pass      A   

使用 loc[] 索引器应用 If-Else 条件语句

Pandas 中的 .loc[] 索引器是用于根据标签选择和更改数据的有效工具。 它还允许您将条件逻辑应用于 DataFrame 的特定子集。 .loc[] 主要用于基于标签的索引和切片。 它可以用于通过标签或布尔数组访问一组行和列。 当与条件语句结合使用时,loc[] 成为就地修改 DataFrame 项目的有效工具。 这种方法高效且易于理解,特别是对于大型 DataFrames,因为它允许直接访问和编辑项目。

示例

让我们使用不同的阈值,使用 .loc[] 将分数分类为“高”、“中”和“低”。

代码

输出

 
    student  score result grade category
0    Amy     85   Pass     B     High
1      Fred    40   Fail       F      Low
2  Carl   75   Pass     C    Medium
3    Don   30   Fail       F      Low
4      Eva    90   Pass      A     High   

使用 map() 方法应用 If-Else 条件语句

.map() 技术可用于根据输入对应关系(字典、Series 或函数)映射 Series 值。 当映射很简单时,这是一种使用条件逻辑的便捷方法。 .map() 用于将 Series 中的每个值替换为可以使用函数、字典或 Series 提供的另一个值。 此方法对于执行简单的值更改和替换特别有用。 当与字典一起使用时,map() 可以实现直接查找,使其成为简单映射的理想选择。

示例

假设我们有一个成绩和绩点之间的映射,并且想要向我们的 DataFrame 添加一个新列 grade_point。

代码

输出

 
    student  score  result  grade  category  grade_point
0    Amy      85     Pass     B       High            3
1      Fred     40      Fail      F       Low             0
2    Carl  75     Pass     C      Medium        2
3    Don    30     Fail      F        Low             0
4      Eva     90     Pass     A        High            4   

使用 mask() 方法应用 If-Else 条件语句

Pandas .mask() 方法替换条件为 True 的值。 它实际上是 where() 方法的逆方法,如果条件为假,则替换值。 .mask() 用于在条件为真时替换 DataFrame 或 Series 中的值。 它非常适合屏蔽掉特定值并将它们替换为所需的值。 此函数与 np.where() 类似,不同之处在于,您不是根据标准选择值,而是屏蔽并替换它们。

示例

假设我们希望在学生分数低于 50 分时使用“匿名”匿名化学生姓名。

代码

输出

 
      student    score  result  grade  category  grade_point
0      Amy        85     Pass     B         High            3
1  Anonymous 40     Fail      F          Low            0
2    Carl       75    Pass     C       Medium         2
3  Anonymous  30    Fail      F          Low            0
4        Eva         90    Pass     A          High           4   

结论

在 Pandas 中使用 if-else 条件表达式是数据操作和分析的一项基本能力。 每种方法(无论是利用 'np.where()' 进行向量化操作,利用 '.apply()' 进行更复杂的行式或列式更改,利用 '.loc[]' 进行协调和熟练的修改,利用 '.map()' 进行基本值映射,还是利用 '.mask()' 用于根据条件替换特定值)都有其自身的偏好和最佳使用场景。 理解和掌握这些方法可以提高您管理广泛的数据处理就业能力,从而产生更有效、可读和可行的代码。 无论您是新手还是经验丰富的数据科学家,这些方法都将帮助您自信而精确地处理 Pandas 中的条件逻辑。


下一个主题Pandas 面试