将 Lambda 函数应用于 Pandas DataFrame
- Lambda 函数
-
使用
DataFrame.assign()
方法在单个列上应用 Lambda 函数 -
使用
DataFrame.assign()
方法在多列上应用 Lambda 函数 -
使用
DataFrame.apply()
方法在单行上应用 Lambda 函数 - 通过应用 Lambda 函数过滤数据
-
通过应用 Lambda 函数来使用
map()
函数 -
通过应用 Lambda 函数使用
if-else
语句 - 结论
lambda
函数解决了 Pandas python 中的各种数据科学问题。我们可以在 pandas DataFrame
中的行和列上应用 lambda 函数。
我们将在本文中探讨如何将 lambda 函数应用于 pandas DataFrame
。
lambda 函数在 pandas DataFrame
上有多种应用,例如 filter()
、map()
和 条件语句
,我们将在本文中通过一些示例进行解释。
Lambda 函数
Lambda 函数包含一个表达式。
Lambda
函数是一个小函数,也可以用作匿名函数,这意味着它不需要任何名称。lambda
函数对于用更少的代码解决小问题很有用。
以下语法用于在 pandas DataFrame
上应用 lambda 函数:
dataframe.apply(lambda x: x+2)
使用 DataFrame.assign()
方法在单个列上应用 Lambda 函数
dataframe.assign()
方法将 Lambda 函数应用于单个列。让我们举个例子。
在下面的示例中,我们在 Students Marks
列上应用了 lambda 函数。应用 Lambda 函数后,计算学生百分比并将其存储在新的百分比
列中。
请参阅以下实现以在 Pandas DataFrame
中的单个列上应用 lambda 函数。
示例代码:
import pandas as pd
# initialization of list
students_record= [['Samreena',900],['Mehwish',750],['Asif',895],
['Mirha',800],['Affan',850],['Raees',950]]
# pandas dataframe creation
dataframe = pd.DataFrame(students_record,columns=['Student Names','Student Marks'])
# using Lambda function
dataframe1 = dataframe.assign(Percentage = lambda x: (x['Student Marks'] /1000 * 100))
# display dataframe
print(dataframe1)
输出:
Student Names Student Marks Percentage
0 Samreena 900 90.0
1 Mehwish 750 75.0
2 Asif 895 89.5
3 Mirha 800 80.0
4 Affan 850 85.0
5 Raees 950 95.0
使用 DataFrame.assign()
方法在多列上应用 Lambda 函数
我们还可以使用 Pandas DataFrame
中的 dataframe.assign()
方法将 Lambda 函数应用于多个列。
例如,我们有四列 Student Names
、Computer
、Math
和 Physics
。我们在 Computer
、Math
和 Physics
等多个主题列上应用了一个 Lambda 函数来计算存储在 Marks_Obtained
列中的获得的分数。
实现以下示例。
示例代码:
import pandas as pd
# nested list initialization
values_list = [['Samreena',85, 75, 100], ['Mehwish', 90, 75, 90], ['Asif', 95, 82, 80],
['Mirha', 75, 88, 68], ['Affan', 80, 63, 70], ['Raees', 91, 64, 90]]
# pandas dataframe creation
df = pd.DataFrame(values_list, columns=['Student Names','Computer', 'Math', 'Physics'])
# applying Lambda function
dataframe = df.assign(Marks_Obtained=lambda x: (x['Computer'] + x['Math'] + x['Physics']))
# display dataframe
print(dataframe)
输出:
Student Names Computer Math Physics Marks_Obtained
0 Samreena 85 75 100 260
1 Mehwish 90 75 90 255
2 Asif 95 82 80 257
3 Mirha 75 88 68 231
4 Affan 80 63 70 213
5 Raees 91 64 90 245
使用 DataFrame.apply()
方法在单行上应用 Lambda 函数
dataframe.apply()
方法将 Lambda 函数应用于单行。
例如,我们将 lambda 函数应用于单行 axis=1
。使用 lambda 函数,我们将每个人的月收入
增加了 1000。
示例代码:
import pandas as pd
df=pd.DataFrame({
'ID':[1,2,3,4,5],
'Names':['Samreena','Asif','Mirha','Affan','Mahwish'],
'Age':[20,25,15,10,30],
'Monthly Income':[4000,6000,5000,2000,8000]
})
df['Monthly Income']=df.apply(lambda x: x['Monthly Income']+1000,axis=1)
print(df)
输出:
ID Names Age Monthly Income
0 1 Samreena 20 5000
1 2 Asif 25 7000
2 3 Mirha 15 6000
3 4 Affan 10 3000
4 5 Mahwish 30 9000
通过应用 Lambda 函数过滤数据
我们还可以通过应用 Lambda 函数来过滤所需的数据。
filter()
函数采用 pandas 系列和一个 lambda 函数。Lambda 函数适用于过滤给定系列后返回特定结果的 pandas 系列。
在下面的示例中,我们在 Age
列上应用了 lambda 函数并过滤了 25 岁以下的人的年龄。
示例代码:
import pandas as pd
df=pd.DataFrame({
'ID':[1,2,3,4,5],
'Names':['Samreena','Asif','Mirha','Affan','Mahwish'],
'Age':[20,25,15,10,30],
'Monthly Income':[4000,6000,5000,2000,8000]
})
print(list(filter(lambda x: x<25,df['Age'])))
输出:
[20, 15, 10]
通过应用 Lambda 函数来使用 map()
函数
我们可以使用 map()
和 lambda 函数。
lambda 函数应用于系列以根据输入对应关系映射系列。此功能对于用其他值替换或替换系列很有用。
当我们使用 map()
函数时,输入大小将等于输出大小。要了解 map()
函数的概念,请参阅以下源代码实现。
示例代码:
import pandas as pd
df=pd.DataFrame({
'ID':[1,2,3,4,5],
'Names':['Samreena','Asif','Mirha','Affan','Mahwish'],
'Age':[20,25,15,10,30],
'Monthly Income':[4000,6000,5000,2000,8000]
})
df['Monthly Income']=list(map(lambda x: int(x+x*0.5),df['Monthly Income']))
print(df)
输出:
ID Names Age Monthly Income
0 1 Samreena 20 6000
1 2 Asif 25 9000
2 3 Mirha 15 7500
3 4 Affan 10 3000
4 5 Mahwish 30 12000
通过应用 Lambda 函数使用 if-else
语句
我们还可以使用 lambda 函数对 pandas dataframes
应用条件语句。
在以下示例中,我们在 lambda 函数中使用了条件语句。我们将条件应用于 Monthly Income
列。
如果月收入大于等于 5000,在 Category
栏内添加 Stable
;否则,添加 UnStable
。
示例代码:
import pandas as pd
df=pd.DataFrame({
'ID':[1,2,3,4,5],
'Names':['Samreena','Asif','Mirha','Affan','Mahwish'],
'Age':[20,25,15,10,30],
'Monthly Income':[4000,6000,5000,2000,8000]
})
df['Category']=df['Monthly Income'].apply(lambda x: 'Stable' if x>=5000 else 'UnStable')
print(df)
输出:
ID Names Age Monthly Income Category
0 1 Samreena 20 4000 UnStable
1 2 Asif 25 6000 Stable
2 3 Mirha 15 5000 Stable
3 4 Affan 10 2000 UnStable
4 5 Mahwish 30 8000 Stable
结论
我们实现了在 Pandas DataFrame
上应用 Lambda 函数的各种方法。我们已经看到如何使用 dataframe.assign()
和 dataframe.apply()
方法在行和列上应用 lambda 函数。
我们在 pandas DataFrame
系列上演示了 lambda 函数的不同应用,例如 filter()
函数、map()
函数、条件语句等。