让我们详细讲解如何将Lambda函数应用于Pandas Dataframe。
1. 理解Lambda函数
Lambda函数也称为匿名函数,是一种不需要使用def
语句定义的函数。Lambda函数的结果是一个函数对象,可以用于执行某些特定任务,但是它的主要优点是可以方便地将其传递给其他函数作为参数。
例如,下面的Lambda函数是用于计算两个数的和:
add = lambda x, y: x + y
result = add(3, 4)
print(result) # 输出 7
2. 准备数据
我们首先需要准备一些数据,以便在DataFrame上应用Lambda函数。下面是示例数据:
import pandas as pd
data = {
'Name':['Tom', 'Jack', 'Steve', 'Ricky', 'Matti', 'Jacob', 'Bill'],
'Age':[28, 34, 29, 42, 37, 31, 22],
'Gender':['Male', 'Male', 'Male', 'Male', 'Female', 'Male', 'Male'],
'Salary':[5000, 7000, 4500, 8000, 6000, 5500, 3000]
}
df = pd.DataFrame(data)
print(df)
输出结果如下所示:
Name Age Gender Salary
0 Tom 28 Male 5000
1 Jack 34 Male 7000
2 Steve 29 Male 4500
3 Ricky 42 Male 8000
4 Matti 37 Female 6000
5 Jacob 31 Male 5500
6 Bill 22 Male 3000
3. 应用Lambda函数
现在我们已经有了数据,下一步是应用Lambda函数。我们将演示以下三个示例:
示例1:基于列数据更新DataFrame
第一个示例中,我们使用Lambda函数更新Salary列数据。通过应用Lambda函数,我们将Salary列数据增加10%。
df['Salary'] = df['Salary'].apply(lambda x: x*1.1)
print(df)
输出结果如下所示:
Name Age Gender Salary
0 Tom 28 Male 5500.0
1 Jack 34 Male 7700.0
2 Steve 29 Male 4950.0
3 Ricky 42 Male 8800.0
4 Matti 37 Female 6600.0
5 Jacob 31 Male 6050.0
6 Bill 22 Male 3300.0
示例2:基于多个列数据更新DataFrame
第二个示例中,我们使用Lambda函数基于多个列数据更新DataFrame。最终目标是根据年龄,性别和薪水计算出平均薪水。我们首先定义一个函数,该函数接受一行数据,并返回平均值。
def calculate_mean(row):
if row['Gender'] == 'Male':
return (row['Salary'] + row['Age']*100)/2
else:
return (row['Salary'] + row['Age']*120)/2
现在,我们可以使用Lambda函数将此函数应用于DataFrame,以更新Salary列。
df['Salary'] = df.apply(lambda row: calculate_mean(row), axis=1)
print(df)
输出结果如下所示:
Name Age Gender Salary
0 Tom 28 Male 3400.0
1 Jack 34 Male 3610.0
2 Steve 29 Male 2975.0
3 Ricky 42 Male 4100.0
4 Matti 37 Female 5340.0
5 Jacob 31 Male 3175.0
6 Bill 22 Male 2250.0
示例3:过滤DataFrame
第三个示例中,我们使用Lambda函数过滤DataFrame。在此示例中,我们筛选出姓名中字母数大于3的员工。
df = df[df['Name'].apply(lambda x: len(x)>3)]
print(df)
输出结果如下所示:
Name Age Gender Salary
1 Jack 34 Male 3610.0
2 Steve 29 Male 2975.0
3 Ricky 42 Male 4100.0
4 Matti 37 Female 5340.0
5 Jacob 31 Male 3175.0
到此为止,我们已经学习了如何将Lambda函数应用于Pandas DataFrame。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:将Lambda函数应用于Pandas Dataframe - Python技术站