pandas lambda if 多条件

pandas lambda if 多条件

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函数,提高数据处理的效率和灵活性。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程