将 Lambda 函数应用于 Pandas DataFrame

Samreena Aslam 2023年1月30日 2022年5月16日
  1. Lambda 函数
  2. 使用 DataFrame.assign() 方法在单个列上应用 Lambda 函数
  3. 使用 DataFrame.assign() 方法在多列上应用 Lambda 函数
  4. 使用 DataFrame.apply() 方法在单行上应用 Lambda 函数
  5. 通过应用 Lambda 函数过滤数据
  6. 通过应用 Lambda 函数来使用 map() 函数
  7. 通过应用 Lambda 函数使用 if-else 语句
  8. 结论
将 Lambda 函数应用于 Pandas DataFrame

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 NamesComputerMathPhysics。我们在 ComputerMathPhysics 等多个主题列上应用了一个 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() 函数、条件语句等。

相关文章 - Pandas DataFrame