pandas apply lambda if

pandas apply lambda if

pandas apply lambda if

pandas 中,apply 函数是一个非常有用的函数,它可以对 DataFrame 或 Series 中的数据进行自定义的处理。而 lambda 函数则是一种匿名函数,可以在 apply 函数中被调用,用来进行一些简单的数据处理。

在实际的数据处理中,有时候我们需要根据某些条件来对数据进行不同的处理。这时候可以结合 apply 函数和 lambda 函数来实现条件处理。本文将详细介绍如何在 pandas 中使用 apply 函数结合 lambda 函数进行条件处理。

1. 基本用法

首先我们先来看一个简单的示例,假设有一个包含年龄数据的 DataFrame,我们想要根据年龄大于等于30岁的人标记为“老年”,小于30岁的人标记为“青年”。

首先创建一个示例数据:

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 32, 28, 35]}
df = pd.DataFrame(data)
print(df)

运行结果如下:

      Name  Age
0    Alice   25
1      Bob   32
2  Charlie   28
3    David   35

接着我们可以使用 apply 函数结合 lambda 函数来实现条件处理:

df['Category'] = df['Age'].apply(lambda x: '老年' if x >= 30 else '青年')
print(df)

运行结果如下:

      Name  Age Category
0    Alice   25      青年
1      Bob   32      老年
2  Charlie   28      青年
3    David   35      老年

可以看到,我们成功根据年龄的大小将人员分为了“老年”和“青年”。

2. 多条件处理

除了单一条件处理外,有时候我们可能需要根据多个条件来对数据进行处理。在这种情况下,我们可以在 lambda 函数中使用 andor 等关键词来实现多条件处理。

接下来继续以年龄数据为例,假设我们需要对年龄在 30 岁以下的女性标记为“青年”,而年龄在 30 岁以上的男性标记为“老年”。

首先创建包含性别数据的示例数据:

data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 32, 28, 35],
        'Gender': ['Female', 'Male', 'Female', 'Male']}
df = pd.DataFrame(data)
print(df)

运行结果如下:

      Name  Age  Gender
0    Alice   25  Female
1      Bob   32    Male
2  Charlie   28  Female
3    David   35    Male

接着我们可以使用多条件处理来为数据添加新的列:

df['Category'] = df.apply(lambda x: '青年' if x['Age'] < 30 and x['Gender'] == 'Female' else '老年' if x['Age'] >= 30 and x['Gender'] == 'Male' else '', axis=1)
print(df)

运行结果如下:

      Name  Age  Gender Category
0    Alice   25  Female       青年
1      Bob   32    Male       老年
2  Charlie   28  Female       青年
3    David   35    Male       老年

可以看到,我们成功根据多个条件将人员分为了“老年”和“青年”。

3. 案例应用

实际数据处理中,我们可能会遇到更复杂的情况,例如根据不同的条件进行不同的数据处理。下面以一个更为复杂的案例来说明如何在 pandas 中使用 apply 函数结合 lambda 函数进行条件处理。

假设有一个包含订单商品和购买数量的 DataFrame,我们需要计算每个商品的总金额,但是需要根据不同的商品类型来使用不同的折扣率进行计算。

首先创建示例数据:

data = {'Product': ['A', 'B', 'A', 'C', 'B', 'C'],
        'Quantity': [2, 3, 1, 5, 2, 4]}
df = pd.DataFrame(data)
print(df)

运行结果如下:

  Product  Quantity
0       A         2
1       B         3
2       A         1
3       C         5
4       B         2
5       C         4

接着我们可以根据不同的商品类型来使用不同的折扣率进行计算总金额:

discount_rate = {'A': 0.9, 'B': 0.8, 'C': 0.7}

def calculate_total(row):
    discount = discount_rate.get(row['Product'], 1)
    return row['Quantity'] * 10 * discount

df['Total'] = df.apply(lambda x: calculate_total(x), axis=1)
print(df)

运行结果如下:

  Product  Quantity  Total
0       A         2   18.0
1       B         3   24.0
2       A         1    9.0
3       C         5   35.0
4       B         2   16.0
5       C         4   28.0

可以看到,我们成功根据不同的商品类型使用了不同的折扣率计算了每个商品的总金额。

结语

本文详细介绍了如何在 pandas 中使用 apply 函数结合 lambda 函数进行条件处理,包括基本用法、多条件处理和案例应用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程