在Pandas DataFrame中应用if条件,可以使用DataFrame的apply方法结合lambda表达式来实现。
具体步骤如下:
- 了解apply方法的参数
apply方法的参数分为两种,一种是作用于列的函数,另一种是作用于行的函数。对于列的函数,apply方法的参数是一个函数。对于行的函数,apply方法的参数是一个axis=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条件。