Pandas 使用条件语句在 Pandas DataFrame 中创建新列
在本文中,我们将介绍如何使用 Pandas 来使用条件语句在 Pandas DataFrame 中创建新列。Pandas 是 Python 数据分析中的重要工具之一,它提供了很多功能,包括数据清理、数据转换等。Pandas DataFrame 是 Pandas 中一个重要的数据结构,它可以存储用于数据处理和分析的表格数据。
阅读更多:Pandas 教程
创建 Pandas DataFrame
在本教程中,我们将使用下面的 Pandas DataFrame 作为例子。首先,我们需要引入 Pandas 库并创建 DataFrame。
import pandas as pd
data = {'Name':['Lucy','Tom', 'Nancy', 'Jerry', 'Louis'],
'Math':[65, 85, 90, 88, 95],
'English':[70, 87, 64, 92, 73],
'Gender':['F', 'M', 'F', 'M', 'M']}
df = pd.DataFrame(data)
df
该 DataFrame 包含五个列,分别存储学生姓名、数学成绩、英语成绩和性别。下面介绍如何在 DataFrame 中创建条件语句。
直接使用条件语句创建新列
在 Pandas 中,我们可以直接使用条件语句,在 DataFrame 中创建新的列。下面是一个示例,该示例展示了如何创建一个新的列,使用 if-else 语句检查数学和英语成绩是否及格。
df['Pass'] = 'Pass'
df.loc[(df['Math']<60) | (df['English']<60), 'Pass'] = 'Fail'
df
在这个示例中,我们使用 Pandas 中的 .loc[] 方法来根据条件筛选 DataFrame 的子集,创建新的列。这个新列的值将根据给定的条件语句自动生成。
在上面的示例中,我们使用了一个 if-else 语句来检查数学和英语成绩是否及格。如果学生的数学成绩或英语成绩小于 60 分,则我们将该学生的 Pass 列赋值为 Fail,否则赋值为 Pass。
使用 np.where() 来创建新的列
可以使用 np.where() 函数创建新列。 Pandas 适用 NumPy,没有直接地给 DataFrame 或 Series 实现 Elementwise 操作功能,因此可以使用 np.where() 函数使用 Pandas 中类似向量化运算的机制来标记并定位这些列。
import numpy as np
df['is_A'] = np.where(df['Grade'] >= 90, True, False) # >= 90分就是A
df.head()
该示例使用了 np.where() 函数来根据某一列的条件(分数是否大于等于90)创建新的 is_A 列。
使用 .apply() 方法
还可以使用 Pandas 的 .apply() 方法创建新列。.apply() 方法是 Pandas 中一个重要的函数,可以应用于 DataFrame 中的列、行、子集等,实现数据的各种转换和操作。
df['Status'] = df['Grade'].apply(lambda x: 'Pass' if x>=60 else 'Fail')
df.head()
该示例使用了 .apply() 方法将一个 lambda 表达式应用于 DataFrame 中的 Grade 列,实现根据分数创建新的 Status 列。
总结
本文介绍了在 Pandas DataFrame 中使用条件语句创建新列的三种方法:直接使用条件语句、使用 np.where() 函数和使用 .apply() 方法。这些方法可以在 Pandas 中进行数据分析和处理,对于处理复杂数据非常有用。其中,使用条件语句直接创建新列比较简单明了。 np.where() 函数可以将逻辑条件用作向量化函数的输入,从而避免了使用循环的计算开销。使用 .apply() 方法则相对灵活,可以更加自由地应用各种转换和操作。
通过以上三种方法,我们可以实现基于条件语句在 Pandas DataFrame 中创建新列。在实际的数据分析和处理中,这些方法都具有广泛的适用性,并能方便地实现各种复杂的数据操作。
极客教程