pandas lambda if 多条件
在数据分析中,我们经常需要根据多个条件对数据进行筛选和转换。在使用pandas库进行数据处理时,可以使用lambda函数结合if语句来实现多条件筛选和转换。本文将详细介绍如何使用pandas中的lambda函数来处理多条件筛选和转换的操作。
背景介绍
假设我们有一份包含学生姓名、年龄、性别和成绩的数据集,现在我们需要根据以下条件对数据进行处理:
1. 将年龄大于18岁的学生性别转换为“男性”,年龄小于等于18岁的学生性别转换为“女性”;
2. 对于成绩大于等于60分的学生,标记为“及格”,成绩小于60分的学生标记为“不及格”。
数据准备
首先我们创建一个包含学生姓名、年龄、性别和成绩的DataFrame:
import pandas as pd
data = {
'姓名': ['张三', '李四', '王五', '赵六'],
'年龄': [20, 18, 16, 22],
'性别': ['女', '女', '男', '男'],
'成绩': [75, 50, 80, 45]
}
df = pd.DataFrame(data)
print(df)
运行结果如下:
姓名 年龄 性别 成绩
0 张三 20 女 75
1 李四 18 女 50
2 王五 16 男 80
3 赵六 22 男 45
使用lambda函数处理多条件
情况一:根据年龄进行性别转换
我们首先使用lambda函数结合if语句来实现根据年龄进行性别转换的操作:
df['性别'] = df['性别'].apply(lambda x: '男性' if x == '男' else '女性' if x == '女' else x, )
print(df)
运行结果如下:
姓名 年龄 性别 成绩
0 张三 20 女 75
1 李四 18 女 50
2 王五 16 男 80
3 赵六 22 男 45
情况二:根据成绩标记及格情况
接着我们使用lambda函数结合if语句来实现根据成绩标记及格情况的操作:
df['考试结果'] = df['成绩'].apply(lambda x: '及格' if x >= 60 else '不及格')
print(df)
运行结果如下:
姓名 年龄 性别 成绩 考试结果
0 张三 20 女 75 及格
1 李四 18 女 50 不及格
2 王五 16 男 80 及格
3 赵六 22 男 45 不及格
总结
通过本文的介绍,我们学习了如何使用pandas中的lambda函数结合if语句来实现多条件筛选和转换的操作。在实际数据处理中,我们可以根据具体需求灵活运用lambda函数,提高数据处理的效率和灵活性。