在Pandas DataFrame中应用if条件的方法

  • Post category:Python

在Pandas DataFrame中应用if条件,可以使用DataFrame的apply方法结合lambda表达式来实现。

具体步骤如下:

  1. 了解apply方法的参数

apply方法的参数分为两种,一种是作用于列的函数,另一种是作用于行的函数。对于列的函数,apply方法的参数是一个函数。对于行的函数,apply方法的参数是一个axis=1的关键字参数以及一个函数。

  1. 构造lambda表达式

构造lambda表达式的语法为 lambda x: 函数体,其中x代表DataFrame的每一行或每一列,函数体中根据if条件判断需要对x进行什么操作,可以是返回一个值或者修改某些值。

例如,假设我们有以下一组数据:

import pandas as pd

df = pd.DataFrame({
    "name":["Tom", "Jerry", "Mary", "Alex"],
    "score":[85, 92, 68, 77]
})

现在我们想给每一个人的成绩打上A、B、C、D的等级,可以根据以下规则:

  • 90分及以上:A
  • 80~89分:B
  • 70~79分:C
  • 70分以下:D

那么我们可以通过以下lambda表达式来实现:

df["grade"] = df["score"].apply(lambda x: "A" if x >= 90 else ("B" if x >= 80 else ("C" if x >= 70 else "D")))

这段代码中,我们通过apply方法把lambda表达式作用到score列上,根据不同的分数区间返回等级,最后把等级存储到grade列中。

完整代码如下:

import pandas as pd

df = pd.DataFrame({
    "name":["Tom", "Jerry", "Mary", "Alex"],
    "score":[85, 92, 68, 77]
})

df["grade"] = df["score"].apply(lambda x: "A" if x >= 90 else ("B" if x >= 80 else ("C" if x >= 70 else "D")))

print(df)

输出结果如下:

    name  score grade
0    Tom     85     B
1  Jerry     92     A
2   Mary     68     D
3   Alex     77     C

这样我们就成功地在Pandas DataFrame中应用了if条件。